Android使一个元素仅出现在纵向视图中

时间:2014-05-17 15:16:58

标签: java android xml rotation

我有一个广告支持的应用。因此,当屏幕旋转时,广告仍然存在。我希望能够使广告仅在手机处于纵向而非横向时才存在。我是否需要声明一个单独的格局xml或者有不同的方法来执行此操作?如果我需要声明一个横向xml如何在java中处理它? 这是相关的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:screenOrientation="portrait"
    >
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text=" "
        android:id="@+id/textView"
        android:layout_centerHorizontal="true" android:layout_gravity="center_horizontal"/>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@+id/pic"
                android:layout_weight="1"
        >
    <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/imageView"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center_horizontal"
            android:adjustViewBounds="true"
            android:scaleType="centerCrop"/>


</RelativeLayout>
<com.google.ads.AdView android:id="@+id/adView"
                       android:layout_width="wrap_content"
                       android:layout_height="wrap_content"
                       ads:adUnitId="4"
                       ads:adSize="BANNER"

                       android:layout_centerHorizontal="true"/>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/pic"
        >
       //a bunch of buttons
</LinearLayout>

谢谢!

更新 这是应用程序在实现layout-land文件夹并删除我不想要的元素(即adview)后崩溃的logcat .txt

2 个答案:

答案 0 :(得分:2)

您需要将文件夹 layout-land 添加到 res 文件夹,并拥有一个xml文件,其名称与您希望显示的布局设置相同景观取向。

当方向更改为横向

时,将显示新布局

查看支持不同屏幕的文档:

http://developer.android.com/training/basics/supporting-devices/screens.html

另一个可能相关的选项是通过覆盖onConfigurationChanged来监控方向更改并执行方向更改的特定任务。 SO上有很多关于那个帖子

例如:

Why not use always android:configChanges="keyboardHidden|orientation"?

How to detect orientation change in layout in Android?

希望这会有所帮助...

答案 1 :(得分:0)

您可以为横向和纵向方向提供不同的xml布局文件,并且可以使用以下方法处理代码中的旋转:

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);

// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 
{

    // You can set the "visibilty=gone" , on the view that is showing the ad-
    //which will result in not displaying that view
} 
else
{
    //set visibilty=visible on the view component
}
}