Android: Добавление столбца в GridLayout разрушает сетку, вызывает переполнение первого столбца - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь использовать gridlayout, чтобы иметь сетку 5x5 с равномерно расположенными кнопками. Первые четыре столбца строки получились красиво и именно так, как я этого хотел (и новый ряд, казалось, тоже хорошо стартовал, когда я его протестировал).

Вот соответствующий xml:

    <androidx.gridlayout.widget.GridLayout
        android:id="@+id/gridLayoutBoard"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:columnCount="5"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:rowCount="5">

        <Button
            android:id="@+id/buttonBoardCell00"
            android:onClick="buttonBoardCellOnClick"
            app:layout_column="0"
            app:layout_columnWeight="1"
            app:layout_row="0"
            app:layout_rowWeight="1" />
        <Button
            android:id="@+id/buttonBoardCell01"
            android:onClick="buttonBoardCellOnClick"
            app:layout_column="1"
            app:layout_columnWeight="1"
            app:layout_row="0"
            app:layout_rowWeight="1" />
        <Button
            android:id="@+id/buttonBoardCell02"
            android:onClick="buttonBoardCellOnClick"
            app:layout_column="2"
            app:layout_columnWeight="1"
            app:layout_row="0"
            app:layout_rowWeight="1" />
        <Button
            android:id="@+id/buttonBoardCell03"
            android:onClick="buttonBoardCellOnClick"
            app:layout_column="3"
            app:layout_columnWeight="1"
            app:layout_row="0"
            app:layout_rowWeight="1" />



    </androidx.gridlayout.widget.GridLayout>

А вот как это выглядит:
enter image description here
Пока все хорошо. Причина в том, что он такой высокий, потому что он занимает все вертикальное пространство. Но когда я начал новый ряд, то новый ряд занял половину вертикального пространства. Так что это не проблема.

Теперь давайте добавим еще одну кнопку под кнопкой 03:

<Button
                android:id="@+id/buttonBoardCell04"
                android:onClick="buttonBoardCellOnClick"
                app:layout_column="4"
                app:layout_columnWeight="1"
                app:layout_row="0"
                app:layout_rowWeight="1" />

После изменения первая ячейка переполняется, и вот так она выглядит в эмулятор:
enter image description here
и в Android Studio:
enter image description here

Что я делаю не так? Как я могу решить проблему?

1 Ответ

2 голосов
/ 10 февраля 2020

Добавьте layout_width и layout_height к 0dp в вашем Button

<Button
    ...
    android:layout_width="0dp"
    android:layout_height="0dp"
    .../>
...