如何为肖像和景观取向指定不同的布局?
-
22-09-2019 - |
题
我已经参考了能够为活动指定两个单独的布局XML文件,一个用于肖像,一个用于景观。不过,我没有找到有关如何做到这一点的任何信息。如何为每个活动指定哪个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
目录和对齐您的景观模式的内容。
请注意,两者中的内容ID xml
是同样的。
或使用此:
<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,并使用所需的dp。
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/
不隶属于 StackOverflow