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_width
和 layout_height
添加到 0dp
<Button
...
android:layout_width="0dp"
android:layout_height="0dp"
.../>
我正在尝试使用 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_width
和 layout_height
添加到 0dp
<Button
...
android:layout_width="0dp"
android:layout_height="0dp"
.../>