android – 如何在 GridLayout 中留空 space

android – How to leave empty space in GridLayout

我有 GridLayout(来自支持库),其中有两行按钮。所有按钮的宽度设置为 2,高度设置为 1。第一行应向右移动一个位置。当我这样做时,GridLayout 就像第一行没有移动一样。

第二行:

GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.rowSpec = GridLayout.spec(1, 1, 1);
params.columnSpec = GridLayout.spec(x, 2, 1);

第一行:

GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.rowSpec = GridLayout.spec(0, 1, 1);
params.columnSpec = GridLayout.spec(x + 1, 2, 1);

您必须向顶部和左侧(开始)的所有单元格插入虚拟视图。

for (int x = 0; x < gridLayout.getColumnCount(); x++) {
    GridLayout.LayoutParams params = new GridLayout.LayoutParams();
    params.rowSpec = GridLayout.spec(0, 1, 1);
    params.columnSpec = GridLayout.spec(x, 1, 1);
    params.setGravity(Gravity.FILL);
    params.width = 0;
    gridLayout.addView(new Space(this), params);
}
for (int y = 0; y < gridLayout.getRowCount(); y++) {
    GridLayout.LayoutParams params = new GridLayout.LayoutParams();
    params.rowSpec = GridLayout.spec(y, 1, 1);
    params.columnSpec = GridLayout.spec(0, 1, 1);
    params.setGravity(Gravity.FILL);
    params.width = 0;
    gridLayout.addView(new Space(this), params);
}

这是我想出的更好的 (IMO) 解决方案;

<GridLayout
    android:orientation="horizontal"
    android:columnCount="3"
    android:useDefaultMargins="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <Space android:layout_columnWeight="1" />
    <Space android:layout_columnWeight="1" />
    <Space android:layout_columnWeight="1" />

    <TextView
        android:text="01"
        android:layout_columnWeight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:textColor="@color/colorWhite"
        android:background="@color/colorBlack"
        android:padding="15dp" />

    <TextView
        android:text="02"
        android:layout_columnWeight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:textColor="@color/colorWhite"
        android:background="@color/colorBlack"
        android:padding="15dp" />


    <!-- REPEAT ITEM HOWEVER MANY TIMES -->


</GridLayout>

下面是它在网格中呈现 4、3、2 和 1 个项目的方式,并向 GridLayout 添加了默认边距;