问题描述
在我的 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 (将#修改为@)