如何在 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 (将#修改为@)