为什么'layout_column'不会将元素放在GridLayout中?

时间:2016-11-23 10:10:24

标签: android android-layout android-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>

我正在将最后一行中“下一步”按钮的android:layout_column参数从3更改为2,但这不会改变它在布局上的位置:

Next button position

根据我对Grid-Layout的理解,我有几列,参数layout_column指定放置元素的列。但这似乎不起作用。元素的位置不会改变。

2 个答案:

答案 0 :(得分:2)

您必须设置layout_column才能完成这项工作。然后更改$(document).ready(function(){ $("#block").click(function(){ var a=$(this).val(); alert(a); }); }); 将起作用

答案 1 :(得分:1)

您的第一列结尾位于Password的右侧(至少它是android:layout_column="0"表示)

这也是第1列的开头。但是您没有在此列中指定任何元素。所以它跨越GridLayout宽度的其余部分。

最好将列间距设置为2,并使用android:layout_gravity="center_horizontal"将按钮的跨度设置为2

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