在我的XML布局中,我尝试根据显示方向在LinearLayout上设置不同的paddingTop。
上面的代码适用于纵向模式,但在横向模式下我想要,例如,android:paddingTop="20dp"
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingStart="5dp"
android:paddingEnd="0dp"
android:paddingTop="60dp"
android:orientation="vertical">
<TextView></TextView>
<TextView></TextView>
</LinearLayout>
可以从XML或需要我以编程方式管理屏幕方向更改吗?
谢谢。
答案 0 :(得分:1)
使用xml执行此操作时有两种选择。为纵向/横向指定不同的布局文件或使用单个布局文件并为纵向/横向定义不同的尺寸。
不同的布局文件
如果您在纵向/横向中具有明显不同的布局,则实际上只需使用不同的布局。随着应用程序规模的扩大,维护不同的布局会更加困难。在res
文件夹中,您需要创建两个子文件夹:
res/layout-port
res/layout-land
然后,您将在每个文件夹中创建一个具有相同名称的文件。当设备处于纵向状态时,将使用layout-port
中的文件;当使用layout-land
中的文件时,将使用该文件。
不同的维度文件
第二个选项是使用一个布局文件,但在其中定义动态尺寸。首先,您需要在res
文件夹中创建两个文件夹:
res/values-port
res/values-land
然后,您需要在每个文件夹中创建一个名为dimens.xml
的文件。在values-port
文件夹中,您可以将其设置为:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="main_screen_padding_top">60dp</dimen>
</resources>
并在values-land
文件夹中将其设置为:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="main_screen_padding_top">20dp</dimen>
</resources>
然后在布局xml文件中,您可以引用该维度值:
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingStart="5dp"
android:paddingEnd="0dp"
android:paddingTop="@dimen/main_screen_padding_top"
android:orientation="vertical">
<TextView></TextView>
<TextView></TextView>
</LinearLayout>
它将使用适当的尺寸,具体取决于设备的方向。
出于您的目的,我建议使用尺寸方法,因为它通常更容易维护。