1. 原理說明:
我們知道,在 RelativeLayout 佈局中有很多特殊的屬性,通常在載入佈局之前,在相關的xml文件中進行靜態設置即可。
但是,在有些情況下,我們需要動態設置佈局的屬性,在不同的條件下設置不同的佈局排列方式,這時候就需要用到 RelativeLayout.LayoutParams.addRule() 方法,該方法有兩種重載方式:
- addRule(int verb) :用此方法時,所設置節點的屬性不能與其它兄弟節點相關聯或者屬性值爲布爾值(布爾值的屬性,設置時表示該屬性爲 true,不設置就默認爲 false),比如:addRule(RelativeLayout.CENTER_VERTICAL) 就表示在 RelativeLayout 中的相應節點是垂直居中的。
- addRule(int verb, int anchor) :該方法所設置節點的屬性必須關聯其它的兄弟節點或者屬性爲布爾值( 屬性爲布爾值時,anchor 爲 RelativeLayout.TRUE 表示 true,anchor 爲0表示 false),比如:addRule(RelativeLayout.ALIGN_LEFT, R.id.date) 就表示 RelativeLayout 中的相應節點放置在一個 id 值爲 date 的兄弟節點的左邊。
2. 基本流程實例:
// ... ...
View view = parentView.findViewById(R.id.subject);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view
.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_RIGHT, R.id.date);
// params.addRule(RelativeLayout.CENTER_IN_PARENT);
view.setLayoutParams(params);
//... ...