我已经看到了能够为一个活动指定两个单独的布局xml文件的引用,一个用于Portrait,一个用于Landscape。我没有找到任何有关如何做到这一点的信息。如何为每个活动指定哪个xml文件是纵向布局,哪个是横向布局?
是否也可以为不同的屏幕尺寸指定不同的布局?如果是这样,这是怎么做到的?
创建一个layout-land
目录,并将布局XML文件的横向版本放在该目录中。
您只需根据方向和分辨率将其放在具有不同名称的单独文件夹下,设备将自动为其屏幕设置选择正确的文件夹
更多信息:
http://developer.android.com/guide/practices/screens_support.html
在“屏幕大小和密度的资源目录限定符”下
只是提醒:
如果您定义了清单orientation
文件中的活动,请从android:configChanges
属性中删除xml
:
android:configChanges="orientation|screenLayout|screenSize"
创建一个新目录layout-land
,然后在xml
中创建具有相同名称的layout-land
文件,因为它是layout
目录并将您的内容与Landscape模式对齐。
请注意,两个xml
中的内容ID都相同。
或者用这个:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:scrollbars="vertical"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Add your UI elements inside the inner most linear layout -->
</LinearLayout>
</ScrollView>
下面的最后一行是应用两个量词的示例:横向和最小宽度(600dp)屏幕。用你需要的东西更新600dp。
res/layout/main_activity.xml # For handsets
res/layout-land/main_activity.xml # For handsets in landscape
res/layout-sw600dp/main_activity.xml # For 7” tablets
res/layout-sw600dp-land/main_activity.xml # For 7” tablets in landscape
以上也适用于尺寸
res/values/dimens.xml # For handsets
res/values-land/dimens.xml # For handsets in landscape
res/values-sw600dp/dimens.xml # For 7” tablets
res/values-sw600dp-land/dimens.xml # For 7” tablets in landscape
一个有用的设备指标:https://material.io/tools/devices/