动态创建的表行之间的填充

时间:2014-04-21 19:33:14

标签: android android-tablelayout tablerow

我创建了一个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)时 我得到这样的输出:

enter image description here

这是正常的输出,除了我希望按钮之间的空间减少。

2 个答案:

答案 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);

enter image description here

答案 1 :(得分:1)

您看到的间距是标准Android按钮后台资源中内置的填充。通过打开&#34;显示布局边界&#34;您可以看到您的布局是正确的。在设置&gt;开发者选项。您只需制作自己的按钮资源,或者如果只需要简单的颜色,则只需将按钮背景设置为颜色即可。