Android程序中如何在TableRow中通过编程方式设置ImageButton的margin?

4
我在Java代码中定义了一个TableLayout。每一行都显示三个ImageButtons。当其中一个按钮被按下时,背景颜色会改变。为了美观,我设置了10px的填充。现在遇到的问题是,如果你按下相邻的两个按钮,你看不到按钮之间的间隔。所以我想知道,是否有可能在ImageButtons上设置边距或其他解决方案?
2个回答

12

尝试一下

int leftMargin = 10;
((MarginLayoutParams) imageButton.getLayoutParams()).leftMargin = leftMargin;

编辑: 如果您不使用在XML中定义的ImageButton,则需要像这样设置LayoutParams

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT);
params.leftMargin = 10;
b.setLayoutParams(params);

我假设你在列表项中使用了 LinearLayout


我尝试过了,但我的应用程序崩溃了。这是我使用的代码:http://pastebin.com/ibB3840J - Hannelore
我以为你在xml中定义了imagebutton,但是你在代码中创建了它,所以你需要设置LayoutParams而不是获取它们。我会编辑答案。 - ernazm
谢谢您的快速回答,但我正在使用TableLayout。因此,我已经将LinearLayout替换为TableLayout,但是ImageButtons在模拟器中没有显示出来。这个解决方案只适用于LinearLayout吗? - Hannelore
我的解决方案适用于ListView,但请尝试将LinearLayout.LayoutParams替换为TableLayout.LayoutParams - ernazm
1
或者使用 TableRow.LayoutParams - ernazm

2

请务必使用容器所在的LayoutParams。在您的情况下,按钮位于TableRow中,因此如果使用任何其他类型的params,则控件将根本不显示,请使用TableRow.LayoutParams


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接