有人可以解释GridLayoutrowOrderPreservedcolumnOrderPreserved是什么意思吗?

我不了解这些文档。将值设置为true或false有什么区别。插图将非常有帮助。

最佳答案

考虑下面带有GridLayout的代码:

<GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:useDefaultMargins="true"
    android:alignmentMode="alignBounds"
    android:columnOrderPreserved="true"
    android:columnCount="4"
    >

    <TextView
        android:text="Email setup"
        android:textSize="32dip"
        android:layout_columnSpan="4"
        android:layout_gravity="center_horizontal"
        />

    <TextView
        android:text="Email address:"
        android:layout_gravity="left"
        />

    <EditText
        android:ems="10"
        />

    <TextView
        android:text="Password:"
        android:layout_column="0"
        android:layout_gravity="right"
        />

    <EditText
        android:ems="8"
        />



    <Button
        android:text="Next"
        android:layout_row="4"
        android:layout_column="3"
        />
</GridLayout>

此xml生成如下 View ,其中“下一步”按钮位于屏幕外部:

android - GridLayout的rowOrderPreserved和columnOrderPreserved-LMLPHP

这是因为第一个EditText元素定义了第二列的宽度。在第四列中定义“下一步”按钮时,它必须在第二列的右边。

现在,将属性columnOrderPreserved更改为false可使android自由地以最适合给定约束的顺序放置水平列边界。 (请参阅documentation)结果如下图所示:

android - GridLayout的rowOrderPreserved和columnOrderPreserved-LMLPHP

10-08 14:49