在Android中的Gridlayout中“合并”行/列

时间:2013-10-16 10:13:19

标签: android grid-layout

我是Android的新手,我正在尝试使用Gridlayout,但是有点麻烦,我不知道如何在Gridlayout中合并comlumns / rows。在下面的代码中,我尝试使用span,但在Description edittext中,Description列(第0列)保持跨越并使其他列(第1,2列...)移出屏幕。我该如何解决这个问题?

<GridLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
    android:columnCount="6" android:rowCount="8" android:orientation="horizontal">
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Create Goal"
        android:layout_columnSpan="6"
        android:gravity="center_horizontal"
        android:textSize="20dp"
        android:layout_marginTop="15dp"
        android:id="@+id/textView" android:layout_row="0" android:layout_column="0"
        android:layout_gravity="center_horizontal"/>
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Name"
        android:id="@+id/goalNameLb" android:layout_row="1" android:layout_column="0"
        android:textSize="15dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp"
        android:layout_gravity="fill_horizontal"/>
<EditText
        android:layout_width="wrap_content"
        android:layout_gravity="center_horizontal|left"
        android:layout_height="wrap_content"
        android:layout_columnSpan="5"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:id="@+id/goalName" android:layout_row="1" android:layout_column="1"/>
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill_horizontal"
        android:text="Goal Type"
        android:textSize="15dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:id="@+id/goalTypeLb" android:layout_row="2" android:layout_column="0"/>
<RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Short Term"
        android:layout_columnSpan="2"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="10dp"
        android:id="@+id/shortTerm" android:layout_row="3" android:layout_column="0" android:checked="false"/>
<RadioButton
        android:layout_gravity="fill_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Long Term"
        android:layout_marginTop="10dp"
        android:layout_columnSpan="3"
        android:layout_marginLeft="40dp"
        android:id="@+id/longTerm" android:layout_row="3" android:layout_column="2"
        android:checked="false"/>

<TextView
        android:layout_gravity="fill_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Description"
        android:layout_row="4"
        android:layout_column="0"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        />
<EditText
        android:layout_gravity="fill_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:id="@+id/goalName" android:layout_row="5" android:layout_column="0"/>
<TextView
        android:layout_gravity="fill_horizontal"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/deadlineLb"
        android:layout_row="6"
        android:layout_column="0"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:text="Deadline"
        android:textSize="15dp"
        />

</GridLayout>

3 个答案:

答案 0 :(得分:0)

使用layout_columnSpan合并列,使用layout_rowSpan合并行。您可以在每个控件中设置合并。

在您的情况下,要将说明TextView合并到第1列和第2列:

<TextView
        android:layout_gravity="fill_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Description"
        android:layout_row="4"
        android:layout_column="0"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:layout_columnSpan="2" 
        />

您可以在此处找到更多信息:GridLayout.LayoutParams

答案 1 :(得分:-1)

您正在使用固定值进行布局设计。这可能会导致通用视图出现问题。您可以使用表格布局。例如,请访问以下链接。     1。Link1 2。Link2

答案 2 :(得分:-1)

我知道这是一个老问题,但我有另一种解决方案。 您可以使用LinearLayout块来包含多个项目。这个LinearLayout将会被看到&#39;作为GridLayout的1个元素。