用代码设置 RelativeLayout.LayoutParams

发布时间:2025-12-09 14:10:08 浏览次数:13

1.注意

  • 不能在RelativeLayout容器本身和他的子元素之间产生循环依赖,比如说,不能将RelativeLayout的高设置成为WRAP_CONTENT的时候将子元素的高设置成为 ALIGN_PARENT_BOTTOM。
  • 如果parent是wrap_content的话,alignParentRight就意味着要求parent的layout_width="match_parent"alignParentBottom就意味着要求parent的layout_height="match_parent"

  等等。

2.用代码设置RelativeLayout.LayoutParams

 1         RelativeLayout.LayoutParams params3 = (RelativeLayout.LayoutParams) holder.layout.getLayoutParams(); 2  3         //如果之前设置了rule,同时设置了多个rules可能冲突,下面代码清空rules 4         if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){      // >= 17 5             params3.removeRule(RelativeLayout.RIGHT_OF); 6         }else{ 7             int rules[] = params3.getRules(); 8             rules[RelativeLayout.LEFT_OF] = 0; 9             rules[RelativeLayout.RIGHT_OF] = 0;10         }11         //添加新的rules,一般刚创建RelativeLayout.LayoutParams时,不要添加任何rule12         if (mb.contact.isSelf()) {13             params3.addRule(RelativeLayout.LEFT_OF,R.id.msg_portrait);14         }else{15             params3.addRule(RelativeLayout.RIGHT_OF,R.id.msg_portrait);16         }17         holder.layout.setLayoutParams(params3);

3.常用的rule

 1 /**  2  * Rule that aligns a child's right edge with another child's left edge.  3 */  4 public static final int LEFT_OF = 0;  5 /**  6  * Rule that aligns a child's left edge with another child's right edge.  7 */  8 public static final int RIGHT_OF = 1;  9 /**  10  * Rule that aligns a child's bottom edge with another child's top edge.  11 */  12 public static final int ABOVE = 2;  13 /**  14  * Rule that aligns a child's top edge with another child's bottom edge.  15 */  16 public static final int BELOW = 3;  17  18 /**  19  * Rule that aligns a child's baseline with another child's baseline.  20 */  21 public static final int ALIGN_BASELINE = 4;  22 /**  23  * Rule that aligns a child's left edge with another child's left edge.  24 */  25 public static final int ALIGN_LEFT = 5;  26 /**  27  * Rule that aligns a child's top edge with another child's top edge.  28 */  29 public static final int ALIGN_TOP = 6;  30 /**  31  * Rule that aligns a child's right edge with another child's right edge.  32 */  33 public static final int ALIGN_RIGHT = 7;  34 /**  35  * Rule that aligns a child's bottom edge with another child's bottom edge.  36 */  37 public static final int ALIGN_BOTTOM = 8;  38  39 /**  40  * Rule that aligns the child's left edge with its RelativeLayout  41  * parent's left edge.  42 */  43 public static final int ALIGN_PARENT_LEFT = 9;  44 /**  45  * Rule that aligns the child's top edge with its RelativeLayout  46  * parent's top edge.  47 */  48 public static final int ALIGN_PARENT_TOP = 10;  49 /**  50  * Rule that aligns the child's right edge with its RelativeLayout  51  * parent's right edge.  52 */  53 public static final int ALIGN_PARENT_RIGHT = 11;  54 /**  55  * Rule that aligns the child's bottom edge with its RelativeLayout  56  * parent's bottom edge.  57 */  58 public static final int ALIGN_PARENT_BOTTOM = 12;  59  60 /**  61  * Rule that centers the child with respect to the bounds of its  62  * RelativeLayout parent.  63 */  64 public static final int CENTER_IN_PARENT = 13;  65 /**  66  * Rule that centers the child horizontally with respect to the  67  * bounds of its RelativeLayout parent.  68 */  69 public static final int CENTER_HORIZONTAL = 14;  70 /**  71  * Rule that centers the child vertically with respect to the  72  * bounds of its RelativeLayout parent.  73 */  74 public static final int CENTER_VERTICAL = 15;  75 /**  76  * Rule that aligns a child's end edge with another child's start edge.  77 */  78 public static final int START_OF = 16;  79 /**  80  * Rule that aligns a child's start edge with another child's end edge.  81 */  82 public static final int END_OF = 17;  83 /**  84  * Rule that aligns a child's start edge with another child's start edge.  85 */  86 public static final int ALIGN_START = 18;  87 /**  88  * Rule that aligns a child's end edge with another child's end edge.  89 */  90 public static final int ALIGN_END = 19;  91 /**  92  * Rule that aligns the child's start edge with its RelativeLayout  93  * parent's start edge.  94 */  95 public static final int ALIGN_PARENT_START = 20;  96 /**  97  * Rule that aligns the child's end edge with its RelativeLayout  98  * parent's end edge.  99 */ 100 public static final int ALIGN_PARENT_END = 21;

转载于:https://www.cnblogs.com/sjjg/p/5807746.html

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477