Android layout_weight属性

目前网上关于Android layout_weight属性的解释大多观点为:


1. LinearLayout内部的子控件之间的layout_weight是按照正比例分配空间
2. LinearLayout之间的layout_weight是按照反比例分配空间
3. 在Horizontal的LinearLayout中,控件A和控件B的layout_weight分别设置为2和1,并不代表两者的宽度之比为2:1。 控件的宽度等于空间本身需要的宽度,加上通过layout_weight设置分配到了父空间里的宽度。垂直方向的LinearLayout也同理。
4.要想实现控件A和控件B的宽度严格按比例显示,可以每个控件之上都添加一个LinearLayout,在LinearLayout的属性里设置layout_weight.

在layout_width設置為fill_parent的時候,layout_weight所代表的是你的控件要優先盡可能的大,但這個大是有限度的,即fill_parent.
在layout_width設置為wrap_content的時候,layout_weight所代表的是你的控件要優先盡可能的小,但這個小是有限度的,即wrap_content.
layout_height 同 layout_width.


其实,上述观点并没有完全涵盖了layout_weight的所有情况,例如LinearLayout下的子控件既有fill_parent又有wrap_content的情况下如何分配空间。经试验,layout_weight属性的作用可以总结如下:


假设在一个Layout下的子控件有C1、C2、…、Cn,layout_weight值为W1、W2、…、Wn,总layout_weight值为W=W1+W2+…+Wn。

先不考虑每个子控件的layout_weight值和子控件间的相互影响,对于每个子控件,按照Layout下只有该控件单独存在的情况来确定它的大小,结果为S1、S2、…、Sn,总长度为S=S1+S2+…+Sn。

假设layout的大小计算出来最大为L。

那么:

(1)如果L>=S,则各个子控件的最终大小为S1、S2、…、Sn。

(2)如果L<S,则计算差值为d=S-L,此差值由各控件按照layout_weight值的比例来承担。则各个子控件的最终大小为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值