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 添加了默认边距;
我有 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 添加了默认边距;