0

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

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

什么大问题。或者有什么替代方法吗?

4

2 回答 2

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

于 2011-11-29T15:21:32.983 回答
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()它。

于 2011-12-02T10:58:47.213 回答