RelativeLayout.LayoutParams.addRule(int verb) 及 addRule(int verb, int anchor) 對應 XML 中的 layout_alignParentRight、layout_toLeftOf 等屬性。
RelativeLayout container = new RelativeLayout(this);
RelativeLayout.LayoutParams containerParams = new RelativeLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
container.setLayoutParams(containerParams);
Button btn1 = new Button(this);
btn1.setId(View.generateViewId()); // API 17+ 生成唯一 ID
btn1.setText("Left");
Button btn2 = new Button(this);
btn2.setText("Right");
// 關鍵:獲取 btn2 的 LayoutParams 並添加規則
RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); // 對齊父右邊
// params2.addRule(RelativeLayout.LEFT_OF, btn1.getId()); // 或靠左於 btn1
btn2.setLayoutParams(params2);
container.addView(btn1);
container.addView(btn2);
addRule 後**必須**重新 setLayoutParams 才能生效。btn1)必須已有 ID,且已加入同一父佈局或稍後加入。View.generateViewId() 避免 ID 衝突;舊版本可自定義正整數 ID 池。| XML 屬性 | Java 常量 |
|---|---|
| layout_alignParentRight | RelativeLayout.ALIGN_PARENT_RIGHT |
| layout_toLeftOf | RelativeLayout.LEFT_OF |
| layout_below | RelativeLayout.BELOW |
| layout_centerHorizontal | RelativeLayout.CENTER_HORIZONTAL |