微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Android 的 GridLayout 单元格中的每个动态构建的 TextView 之间添加边距?

如何解决如何在 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 举报,一经查实,本站将立刻删除。