【问题标题】:Padding between dynamically created TableRows动态创建的 TableRows 之间的填充
【发布时间】:2014-04-25 05:18:40
【问题描述】:

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

这是正常的输出,只是我希望缩小按钮之间的空间。

【问题讨论】:

  • 只是猜测,但它只是在 param.setMargins() 调用中更改参数值吗?
  • 我想要它,但它似乎对输出没有影响。

标签: android android-tablelayout tablerow


【解决方案1】:

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

【讨论】:

  • 感谢方便的“显示布局边界”提示。我不知道它看起来很有帮助。
  • @kcoppock 谢谢,不是我想要的,但它会正常工作。
【解决方案2】:

在 param.setMargins() 调用中,根据需要使用负值来超越看似自然的间距。您还需要为表格布局提供相同的布局边距,并为宽度和高度使用 WRAP_CONTENT。我不确定是否需要变量“t”,因为我使用 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);

【讨论】:

  • 这不是正确的答案,按钮资产中只是内置了填充;布局很好。
猜你喜欢
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多