以编程方式向按钮对象添加边距

时间:2011-11-29 14:15:36

标签: android android-button

需要以编程方式将左边距设置为按钮对象。 这是代码段:

RelativeLayout rl = (RelativeLayout) findViewById(R.id.for_button);
MarginLayoutParams ml = new MarginLayoutParams(-2,-2);
ml.setMargins(5, 0, 0, 0);

Button btn = new Button(this);
btn.setText("7");
btn.setTextColor(Color.WHITE);
btn.setBackgroundResource(R.drawable.date_button);

rl.addView(btn,ml)

我也试过

btn.setLayoutParams(ml);
rl.addView(btn);

什么是大问题。或者有其他方法吗?

2 个答案:

答案 0 :(得分:3)

好吧,我要给他一枪IronBlossom;我就是这样做的,我希望它有效:

LinearLayout myLinearLayout = (LinearLayout)findViewById(R.id.my_linear_layout);
Button myButton = new Button(this);
// more myButton attribute setting here like text etc //

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
params.setMargins(5,0,0,0);
myLinearLayout.addView(myButton, params);

最好的,

-serkan

答案 1 :(得分:1)

您使用RelativeLayout作为按钮的父级,但是您没有为其指定任何规则按钮的位置(例如ALIGN_PARENT_LEFTALIGN_PARENT_TOP

来设置使用RelativeLayout的位置规则,所以这与布局计算混淆。这意味着您必须使用RelativeLayout.LayoutParams而不是MarginLayoutParams,因为前者允许这些规则并设置了正确的默认值。

改变这一行:

MarginLayoutParams ml = new MarginLayoutParams(-2,-2);

RelativeLayout.LayoutParams ml = new RelativeLayout.LayoutParams(-2,-2);

您可能还想添加规则,因为默认定位值不适合您(默认情况下,视图位于父布局的左上角)。您可以使用RelativeLayout.LayoutParams.addRule()