Android: 在 GridLayout 中添加列会破坏网格,导致第一列溢出

Android: Adding column in GridLayout breaks the grid, makes the first column overflow

我正在尝试使用 gridlayout 来制作一个 5x5 的均匀 spaced 按钮网格。该行的前四列结果很好,完全符合我的要求(新行在我测试时似乎也很好地开始)。

这里是相关的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>

这是它的样子:

到目前为止,一切都很好。之所以这么高,是因为它占据了所有的垂直space。但是当我开始一个新行时,新行占据了垂直 space 的一半。所以这不是问题。

现在,让我们在 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" />

更改后,第一个单元格溢出,这是模拟器中的样子:

在 Android 工作室中:

我做错了什么?我该如何解决这个问题?

在您的 Button

中将 layout_widthlayout_height 添加到 0dp
<Button
    ...
    android:layout_width="0dp"
    android:layout_height="0dp"
    .../>