我创建了一个TableLayout,然后在我的java代码中动态创建了TableRow,并以8x8网格的形式添加了一些按钮。但我想减少按钮之间的空间。我尝试为TableRow设置LayoutParam,但是当我这样做时,输出只显示一个空白屏幕。这是我的代码:
LayoutParams param= new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
field=new Button[8][8];
tb=new TableLayout(this);
param.setMargins(10, 2, 10, 2);
for (int i = 0; i < field.length; i++) {
TableRow current=new TableRow(this);
for (int j = 0; j < field[i].length; j++) {
Button button=new Button(this);
field[i][j]=button;
button.setWidth(40);
button.setHeight(40);
button.setLayoutParams(param);
current.addView(button);
}
tb.addView(current);
}
t.addView(tb);
但是当我不写button.setLayoutParams(param)
时
我得到这样的输出:
这是正常的输出,除了我希望按钮之间的空间减少。
答案 0 :(得分:1)
在param.setMargins()调用中,根据需要使用负值来超越似乎是一些自然间距。您还需要为表格布局提供相同的布局边距,并对宽度和高度使用WRAP_CONTENT。我不确定是否变量&#34; t&#34;我需要在XML文件中使用TableLayout创建按钮。 (我也做了5x5网格以适应我的屏幕。)
LayoutParams param= new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
field=new Button[5][5];
tb=new TableLayout(this);
// these are the two important changes
param.setMargins(-5, -5, -5, -5);
tb.setLayoutParams(param);
for (int i = 0; i < field.length; i++) {
TableRow current=new TableRow(this);
for (int j = 0; j < field[i].length; j++) {
Button button=new Button(this);
field[i][j]=button;
button.setWidth(40);
button.setHeight(40);
button.setLayoutParams(param);
current.addView(button);
}
tb.addView(current);
}
t.addView(tb);
答案 1 :(得分:1)
您看到的间距是标准Android按钮后台资源中内置的填充。通过打开&#34;显示布局边界&#34;您可以看到您的布局是正确的。在设置&gt;开发者选项。您只需制作自己的按钮资源,或者如果只需要简单的颜色,则只需将按钮背景设置为颜色即可。