我在/ 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“屏幕在模拟器中测试了应用程序。有什么我错过的吗?
答案 0 :(得分:2)
但是,当方向改变时,正在使用与肖像相对应的XML。
那是因为这是你告诉Android要做的事情,通过:
android:configChanges="keyboard|keyboardHidden|orientation|screenSize
删除该属性,Android将销毁并重新创建您的活动,并应用新的布局资源。
使用该属性, 作业以某种方式加载onConfigurationChanged()
中的新布局资源。