layout_weight与weightSun

layout_weight:权重,只有在LinearLayout布局中才有效。表明占据的父控件的“剩余”控件大小。
weightSum:如果没有定义就是各个layout_weight的累加值。
google官方建议使用layout_weight时,设置layout_width为0dp,与设置成wrap_content的效果是一样的。
layout_weight的含义是:设置了layout_weight后,那么该view的宽度等于view的原有宽度(layout_width)加上剩余空间的占比。因此把view的layout_width设置成wrap_content和match_parent会有不同的效果。

![NGBOXS5@0G(]HW%G{WN27.png](http://upload-images.jianshu.io/upload_images/2578759-25a552c412977744.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

layout_weight与weightSun_第1张图片
(P`@G~Y6Z16EH`89HP2JK_7.png
layout_weight与weightSun_第2张图片
PAGJ2DU0)PH1`H@)J8%F74J.png

![8CLCS}]`0LD$ZG9D%KCI%DV.png](http://upload-images.jianshu.io/upload_images/2578759-f67f826d82846e85.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
设屏幕宽度为L,在两个view的宽度都为match_parent的情况下,原有宽度为L,两个的View的宽度都为L,那么剩余宽度为L-(L+L) = -L, 左边的View占比三分之一,所以总宽度是L+(-L)*1/3 = (2/3)L.事实上默认的View的weight这个值为0,一旦设置了这个值,那么所在view在绘制的时候执行onMeasure两次的原因就在这。

顺带着理解一下RelativeLayout与LinearLayout在性能方面的区别。

你可能感兴趣的:(layout_weight与weightSun)