Android 根据显示方向更改XML填充属性

Android 根据显示方向更改XML填充属性,android,xml,Android,Xml,在我的XML布局中,我试图根据显示方向在线性布局上设置不同的填充点 上面的代码用于纵向模式,但在横向模式下,我希望,例如,android:paddingTop=“20dp” 它可以从XML中实现,或者我需要在屏幕方向更改时以编程方式管理它 谢谢。使用xml进行此操作时,您有两种选择。为纵向/横向指定不同的布局文件,或使用单个布局文件并为纵向/横向定义不同的尺寸 不同的布局文件 只有在纵向/横向布局明显不同的情况下,才需要使用不同的布局。随着应用程序规模的增长,维护不同的布局会更加困难。在re

在我的XML布局中,我试图根据显示方向在线性布局上设置不同的填充点

上面的代码用于纵向模式,但在横向模式下,我希望,例如,
android:paddingTop=“20dp”


它可以从XML中实现,或者我需要在屏幕方向更改时以编程方式管理它


谢谢。

使用xml进行此操作时,您有两种选择。为纵向/横向指定不同的布局文件,或使用单个布局文件并为纵向/横向定义不同的尺寸

不同的布局文件

只有在纵向/横向布局明显不同的情况下,才需要使用不同的布局。随着应用程序规模的增长,维护不同的布局会更加困难。在
res
文件夹中,您需要创建两个子文件夹:

res/layout-port

res/layout-land
然后在每个文件夹中创建一个同名文件。当设备处于纵向时,将使用
布局端口中的文件
,而处于横向时,将使用
布局区域中的文件

不同的Dimens文件

第二个选项是使用一个布局文件,但在其中定义动态标注。首先,您需要在
res
文件夹中创建两个文件夹:

res/values-port
res/values-land
然后需要在每个文件夹中创建一个名为
dimens.xml
的文件。在
values端口
文件夹中,您可以将其设置为:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="main_screen_padding_top">60dp</dimen>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="main_screen_padding_top">20dp</dimen>
</resources>
然后,您可以在布局xml文件中引用该dimen值:

<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>

它将根据设备的方向使用适当的尺寸


出于您的目的,我建议使用dimens方法,因为它通常更易于维护。

这正是我想要的。非常感谢。
<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>