標籤:
我們知道,在 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 的兄弟節點的左邊。
基本流程執行個體:
//... ... 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中動態改變布局的屬性
Android 動態改變布局屬性RelativeLayout.LayoutParams.addRule()