Подтвердить что ты не робот

Равномерная ширина столбцов Android GridLayout

Невозможно ли легко заставить равные ширины столбцов в Android GridLayout? Попытка очевидного расположения...

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="4"
    android:rowCount="8"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_gravity="center"
        android:text="Button 1" />
    <Button
        android:id="@+id/button2"
        android:layout_gravity="center"
        android:text="Button 2" />
    <Button
        android:id="@+id/button3"
        android:layout_gravity="center"
        android:text="Button 3" />
    <Button
        android:id="@+id/button4"
        android:layout_gravity="center"
        android:text="Button 4" />

</GridLayout>

... оставляет самую правую кнопку, центрированную в столбце, который явно шире, чем остальные три. (Играйте с текстом кнопки, и вы можете легко получить худшие примеры.)

Я прочитал документацию Android о распределении избыточного пространства в GridLayouts, но кажется настолько очевидным, что даже ширина столбцов часто (может быть, даже обычно) требуется в такой ситуации, что я должен верить, что мне не хватает чего-то очевидного/легко.

4b9b3361

Ответ 1

Вместо этого используйте макет таблицы и укажите столбцы растягивания.

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textViewLeaveRemainingDescription"
    android:stretchColumns="0,1">

    <TableRow>
        <Button
            android:id="@+id/button1"
            android:layout_gravity="center"
            android:text="Button 1" />

        <Button
            android:id="@+id/button3"
            android:layout_gravity="center"
            android:text="Button 3" />
    </TableRow>

    <TableRow>
        <Button
            android:id="@+id/button2"
            android:layout_gravity="center"
            android:text="Button 2" />

        <Button
            android:id="@+id/button4"
            android:layout_gravity="center"
            android:text="Button 4" />
    </TableRow>
</TableLayout>