我們知道,在 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); //or params.addRule(RelativeLayout.CENTER_IN_PARENT);
- view.setLayoutParams(params);
- //... ...
這樣的話,可以再Adapter中動態改變布局的屬性
3. 參考資料:
https://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html