我有一个广告支持的应用。因此,当屏幕旋转时,广告仍然存在。我希望能够使广告仅在手机处于纵向而非横向时才存在。我是否需要声明一个单独的格局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
答案 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
}
}