android:layout_weight新认识

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中生效。


猜你喜欢

转载自blog.csdn.net/PK0071/article/details/50934481