需要以编程方式将左边距设置为按钮对象。 这是代码段:
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);
什么是大问题。或者有其他方法吗?
答案 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_LEFT
和ALIGN_PARENT_TOP
)。
你有来设置使用RelativeLayout的位置规则,所以这与布局计算混淆。这意味着您必须使用RelativeLayout.LayoutParams
而不是MarginLayoutParams
,因为前者允许这些规则并设置了正确的默认值。
改变这一行:
MarginLayoutParams ml = new MarginLayoutParams(-2,-2);
到
RelativeLayout.LayoutParams ml = new RelativeLayout.LayoutParams(-2,-2);
您可能还想添加规则,因为默认定位值不适合您(默认情况下,视图位于父布局的左上角)。您可以使用RelativeLayout.LayoutParams.addRule()
。