为什么 'layout_column' 没有将元素放在 GridLayout 中?
Why does the 'layout_column' does not place the element in a GridLayout?
我有以下示例 xml 布局,取自 here(删除了一些不重要的部分):
<?xml version="1.0" encoding="utf-8"?>
<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="right"
/>
<EditText
android:ems="10"
/>
<TextView
android:text="Password:"
android:layout_column="0"
android:layout_gravity="right"
/>
<EditText
android:ems="8"
/>
<Space
android:layout_row="4"
android:layout_column="0"
android:layout_columnSpan="4"
android:layout_gravity="fill"
/>
<Button
android:text="Next"
android:layout_row="5"
android:layout_column="2"
/>
</GridLayout>
我正在将最后一行中 'Next' 按钮的 android:layout_column
参数从 3 更改为 2,但这不会改变它在布局中的位置:
根据我对网格布局的理解,我有几列,参数 layout_column
指定放置元素的列。但这似乎不起作用。元素的位置不会改变。
你的第一列在Password
右边结束(至少它是android:layout_column="0"
表示)
这也是第 1 列的开头。但您尚未在此列中指定任何元素。所以它跨越 GridLayout
.
的其余宽度
column span 只设置为 2 更好,按钮的 span 设置为 2 android:layout_gravity="center_horizontal"
<?xml version="1.0" encoding="utf-8"?>
<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="2">
<TextView
android:text="Email setup"
android:textSize="32dip"
android:layout_columnSpan="2"
android:layout_gravity="center_horizontal"/>
<TextView
android:text="Email address:"
android:layout_gravity="right"/>
<EditText
android:layout_column="1"
android:ems="10"/>
<TextView
android:text="Password:"
android:layout_column="0"
android:layout_gravity="right"/>
<EditText
android:layout_column="1"
android:ems="8"/>
<Space
android:layout_row="4"
android:layout_column="0"
android:layout_gravity="fill"/>
<Button
android:text="Next"
android:layout_row="5"
android:layout_gravity="center_horizontal"
android:layout_columnSpan="2"
android:layout_column="0"/>
</GridLayout>
您必须设置 android:columnOrderPreserved="false"
才能实现此 work.Then 更改 layout_column
将起作用
我有以下示例 xml 布局,取自 here(删除了一些不重要的部分):
<?xml version="1.0" encoding="utf-8"?>
<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="right"
/>
<EditText
android:ems="10"
/>
<TextView
android:text="Password:"
android:layout_column="0"
android:layout_gravity="right"
/>
<EditText
android:ems="8"
/>
<Space
android:layout_row="4"
android:layout_column="0"
android:layout_columnSpan="4"
android:layout_gravity="fill"
/>
<Button
android:text="Next"
android:layout_row="5"
android:layout_column="2"
/>
</GridLayout>
我正在将最后一行中 'Next' 按钮的 android:layout_column
参数从 3 更改为 2,但这不会改变它在布局中的位置:
根据我对网格布局的理解,我有几列,参数 layout_column
指定放置元素的列。但这似乎不起作用。元素的位置不会改变。
你的第一列在Password
右边结束(至少它是android:layout_column="0"
表示)
这也是第 1 列的开头。但您尚未在此列中指定任何元素。所以它跨越 GridLayout
.
column span 只设置为 2 更好,按钮的 span 设置为 2 android:layout_gravity="center_horizontal"
<?xml version="1.0" encoding="utf-8"?>
<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="2">
<TextView
android:text="Email setup"
android:textSize="32dip"
android:layout_columnSpan="2"
android:layout_gravity="center_horizontal"/>
<TextView
android:text="Email address:"
android:layout_gravity="right"/>
<EditText
android:layout_column="1"
android:ems="10"/>
<TextView
android:text="Password:"
android:layout_column="0"
android:layout_gravity="right"/>
<EditText
android:layout_column="1"
android:ems="8"/>
<Space
android:layout_row="4"
android:layout_column="0"
android:layout_gravity="fill"/>
<Button
android:text="Next"
android:layout_row="5"
android:layout_gravity="center_horizontal"
android:layout_columnSpan="2"
android:layout_column="0"/>
</GridLayout>
您必须设置 android:columnOrderPreserved="false"
才能实现此 work.Then 更改 layout_column
将起作用