如何在运行时为Button添加边距?

Dro*_*ird 12 android margin dynamic button

我必须在LinearLayout上添加多个按钮.但我想把这些按钮分开5px.我找不到设置按钮边距的方法.任何的想法?

njz*_*zk2 20

使用button元素的layout_margin属性.这不起作用吗?

<Button android:layout_margin="5px" (...)/>
Run Code Online (Sandbox Code Playgroud)

编辑

在java中创建按钮时,LayoutParams用于指定边距等.

Button button = new Button();
(....)
params = new LinearLayout.LayoutParams();
params.leftMargin = 5;
(set params as you need)
parent.addView(button, params);
Run Code Online (Sandbox Code Playgroud)

您使用的LayoutParams必须与添加按钮的布局相匹配(请参阅http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html).对于LinearLayout,请使用LinearLayout.LayoutParams并相应地设置*Margin字段.

  • 非常感谢你的帮助.对不起,它不能做我想要的!比方说,LinearLayout.LayoutParams lParam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); lParam.setMargins(20,20,20,20); 它为LinearLayout增加了保证金.不是按钮.例如,它有2个按钮,并排,它*不*在按钮之间添加空间!这是我的目标!谢谢! (2认同)

kco*_*ock 8

试试这个:

//Assuming your button is in a LinearLayout as stated
LinearLayout.LayoutParams params = myButton.getLayoutParams();
params.setMargins(0, 0, 0, 0) //left, top, right, bottom
myButton.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)

  • 我不是在编写一个程序来通过测试,这是对所需内容的一般概念.正如我在评论中所说,我假设他的按钮位于LinearLayout中,正如他在原帖中所述.在这个链接:http://developer.android.com/reference/android/view/View.html#getLayoutParams(),声明`当一个视图附加到父ViewGroup时,此方法不能返回null .因此,在这种情况下它不会为空. (2认同)