大家好,又见面了,我是你们的朋友全栈君。
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时,不要添加任何rule 12 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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160844.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...