RelativeLayout.LayoutParams 使用addRule失效的问题解决办法
Button btn1;
btn1.setId(1001);
int width; // layout width;
int btnWidth; // btn width;
int btnHeight; // btn height;
…….
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(btnWidth, btnHeight);
p.addRule(RelativeLayout.ALIGN_PARENT_TOP);
p.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
p.topMargin = config.topMargin;
// 这里必须设置,否则依赖这个左右对齐的控件无法对齐。
// 如果不设置,只使用水平居中的属性,则1001这个控件的leftmargin为0. 导致左右对齐失败
p.leftMargin = (width-btnWidth)/2;
//
Button btn2;
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(btnWidth, btnHeight);
p.addRule(RelativeLayout.ALIGN_PARENT_TOP);
p.addRule(RelativeLayout.ALIGN_LEFT, 1001); // 这里要想生效必须,1001这个控件必须添加leftmargin.
p.topMargin = config.topMargin;
//
Button btn3;
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(btnWidth, btnHeight);
p.addRule(RelativeLayout.ALIGN_PARENT_TOP);
// 这里要想生效必须,1001这个控件必须添加leftmargin/ right margin.
p.addRule(RelativeLayout.ALIGN_RIGHT, 1001);
p.topMargin = config.topMargin;