在GridLayout中对齐按钮

时间:2012-09-26 12:10:10

标签: android android-button gravity grid-layout

我的布局代码及其图形表示是:

enter image description here

这只是一个示例,我在Buttons内的应用程序中大约有30 GridLayout。 我希望我的Buttons填充网格中的整个单元格,网格的列应该是均匀的宽度/高度。

我似乎无法完成任务,欢迎任何帮助。

2 个答案:

答案 0 :(得分:8)

我没有使用GridLayout来推荐使用它的内容,我建议您使用TableLayout。我这样说是因为你的布局非常适合TableLayout的范围,在快速浏览GridLayout的文档后,这似乎是一个问题:

GridLayout不提供权重原则的支持,如权重中所定义。通常,因此无法配置GridLayout以在多个组件之间分配多余空间。

GridLayout中也引入了ICS

您可以在此处使用TableLayout查看布局示例:

https://gist.github.com/3788301

如果您不希望表格填满整个高度,请从weigthSumTableLayoutlayout_weight="1"移除TableRows属性。

答案 1 :(得分:1)

With API level 21+ you can use layout_rowWeight and layout_columnWeight:

 <GridLayout
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:columnCount="2"
        android:rowCount="2"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <Button
            android:id="@+id/button1"
            android:layout_gravity="fill"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:text="Button" />
        <Button
            android:id="@+id/button2"
            android:layout_gravity="fill"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:text="Button" />
        <Button
            android:id="@+id/button3"
            android:layout_gravity="fill"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:text="Button" />
        <Button
            android:id="@+id/button4"
            android:layout_gravity="fill"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:text="Button" />

    </GridLayout>