如何解决如何在 Android 的 GridLayout 单元格中的每个动态构建的 TextView 之间添加边距?
在我的 Java 代码中,我动态构建 TextViews,并将它们添加到 GridLayout。它用于构建游戏板。
我想在 GridLayout 中的每个 TextView 之间留一些空间。使用“GridLayout.setUseDefaultMarings(true)”可以实现这一点,但它提供了太多空间。我想改变它以减少空间。
我尝试在 TextView 和 GridLayout 中添加边距,但我使用的方法不起作用。
下面是我用来制作文本视图并将它们添加到 GridLayout 的代码。
gameLayout = (GridLayout) findViewById(R.id.gridLayout);
//gameLayout.setUseDefaultMargins(true);
//gameLayout.setAlignmentMode(GridLayout.ALIGN_MARGINS);
gameLayout.removeAllViewsInLayout();
gameLayout.setColumnCount(cols); gameLayout.setRowCount(rows);
gameBoard = new TextView[cols][rows];
int index = 0;
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
TextView cell = new TextView(getApplicationContext(),null,R.style.board_cell);
cell.setId(10000 + ++index);
cell.setBackground(getDrawable(R.drawable.board_cell_grey));
int tempRow = j; int tempCol = i;
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
cell.setWidth(1); cell.setHeight(1);
params.setMargins(100,100,100);
cell.setLayoutParams(params);
gameBoard[i][j] = cell;
cell.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onMove(tempRow,tempCol);
}
});
gameLayout.addView(cell,new LayoutParams(
GridLayout.spec(i,GridLayout.ALIGN_MARGINS,1),GridLayout.spec(j,1)));
textView 的样式定义如下:
<style name="board_cell">
<item name="android:gravity">center</item>
<item name="android:textAlignment">center</item>
<item name="android:textSize">24sp</item>
<item name="android:textStyle">bold</item>
<item name="layout_columnWeight">1</item>
<item name="layout_rowWeight">1</item>
<item name="android:layout_margin">1dp</item>
<item name="android:freezesText">true</item>
</style>
GridLayout 在 XML 文件中定义如下:
<androidx.gridlayout.widget.GridLayout
android:id="@+id/gridLayout"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="48dp"
android:layout_weight="1"
app:layout_constraintBottom_toTopOf="@+id/player_X"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/my_toolbar"/>
我已经按照 StackOverflow 上其他答案中的描述尝试过这种方法,但它不起作用:
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
cell.setWidth(1); cell.setHeight(1);
params.setMargins(100,100);
cell.setLayoutParams(params);
我的代码有什么问题?
如何在 GridLayout 中的每个元素之间添加一些边距?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。