【发布时间】:2011-01-08 14:30:42
【问题描述】:
我看到了能够为一个活动指定两个单独的布局 xml 文件的引用,一个用于纵向,一个用于横向。不过,我还没有找到任何关于如何做到这一点的信息。如何为每个活动指定哪个 xml 文件是纵向布局,哪个是横向布局?
是否也可以为不同的屏幕尺寸指定不同的布局?如果是这样,这是如何完成的?
【问题讨论】:
标签: android orientation landscape portrait
我看到了能够为一个活动指定两个单独的布局 xml 文件的引用,一个用于纵向,一个用于横向。不过,我还没有找到任何关于如何做到这一点的信息。如何为每个活动指定哪个 xml 文件是纵向布局,哪个是横向布局?
是否也可以为不同的屏幕尺寸指定不同的布局?如果是这样,这是如何完成的?
【问题讨论】:
标签: android orientation landscape portrait
创建一个 layout-land 目录并将布局 XML 文件的横向版本放在该目录中。
【讨论】:
android:configChanges 中删除方向,则活动将被破坏。
您只需根据方向和分辨率将其放在具有不同名称的单独文件夹下,设备将自动为其屏幕设置选择正确的文件夹
更多信息在这里:
http://developer.android.com/guide/practices/screens_support.html
在“屏幕大小和密度的资源目录限定符”下
【讨论】:
提醒一下:
如果您定义了清单xml 文件中的活动,请从android:configChanges 属性中删除orientation:
android:configChanges="orientation|screenLayout|screenSize"
【讨论】:
创建一个新目录layout-land,然后在layout-land 中创建与layout 目录相同名称的xml 文件,并将您的内容对齐到横向模式。
请注意,xml 中的内容 id 相同。
【讨论】:
下面的最后一行是应用两个量词的示例:横向和最小宽度(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/
【讨论】:
或者使用这个:
<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>
【讨论】: