0

我在 /res 目录中有以下文件夹,以支持不同的屏幕密度和方向。

/layout
/layout-land
/layout-small
/layout-small-land
/layout-large
/layout-large-land

在上述 XML 中,不同之处在于组件之间的对齐方式。例如,纵向:

    <LinearLayout
        android:id="@+id/linearLayout5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/linearLayout3"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/linearLayout3" />

而在风景中,

    <LinearLayout
        android:id="@+id/linearLayout5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/linearLayout3"
        android:layout_marginLeft="60dp"        //widens the margin space
        android:layout_toRightOf="@+id/linearLayout3" />

但是,当方向改变时,将使用与肖像对应的 XML。

这是 AndroidManifest 代码片段。

 <activity
        android:name=".MyActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize" />

我在模拟器中使用 Android 2.2 和 3.7" 屏幕测试了该应用程序。我错过了什么吗?

4

1 回答 1

2

但是,当方向改变时,将使用与肖像对应的 XML。

那是因为这就是你告诉 Android 要做的事情,通过:

android:configChanges="keyboard|keyboardHidden|orientation|screenSize

删除该属性,Android 将销毁并重新创建您的活动,应用您的新布局资源。

有了这个属性,你的工作就是以某种方式加载那些新的布局资源,在onConfigurationChanged().

于 2013-02-11T13:03:13.650 回答