android:layout_weight本来是一个按比例显示的属性,很好理解,不过当同时配置了android:layout_width="match_parent"时就出现了反常的情况。
这里对这个属性做些总结。顺便记录一下
android:layout_weight属性几种情况
一.当android:layout_width="0dip"时,按android:layout_weight分配显示,一切正常。
二.当android:layout_width="wrap_content"时,android:layout_weight属性不生效,可以理解为width优先级必weight高,先按width处理
三.当android:layout_width="match_parent"时,设置android:layout_weight属性,就可能出现反常的情况,主要针对这个情况做个说明。
第三种情况代码如下
理想情况是这样的
现实情况是这样的。。
原因是这个规则:width优先级比较高,先按match_parent分配,剩余的再按照weight分配
假设宽720dp
剩余 = 720 - (720*2) = -720
tv1 = 720 - (-720)* 1/ 3 = 2/3 * 720
tv2 = 720 - (-720)* 2/ 3 = 1/3 * 720
so tv1 :tv2 = 2 : 1
所以要按比例使用weight属性时,设置android:layout_width="0dip"就可以了。还有一点weight属性只在LinnerLayout中生效。