在为属性为match_parent的控件设置权重时出现的反比例情况解析

以垂直方向上按权重分配为例,一般我们使用weight这个属性时,但是当控件的高度不同时其呈现的样式也是有所不同的。

这与权重的计算方式决定的,实际上,对于任何不同属性的设置,权重的计算方式是一样的。

那就是,用在分配方向上的屏幕的总长度(宽度)- 该方向上空间的原有长度(宽度) = 剩余的长度(宽度);

然后在将剩余的长度(宽度)按照权重的比例进行分配;


一、将控件的高度设置为0dp时(android:layout_height="0dp")

在垂直方向上,控件所占的空间则完全按照比例权重的大小来分配;

控件垂直方向上的高度  = (垂直高度 - 0dp)/ 权重总数 * 控件权重

如果每一个空间的权重都为1,则能很好的实现空间的平均分配;


二、将控件的高度设置为wep_content时(android:layout_height="wrap_content")

控件垂直方向上的高度  = ((垂直高度 - 各个控件wrap_content的默认高度和)/ 权重总数 * 控件权重)+ 该控件wrap_content的默认高度;


三、将控件的高度设置为匹配父容器时(android:layout_height="match_parent")

控件垂直方向上的高度  = ((垂直高度 - 各个控件match_parent的默认高度和)/ 权重总数 * 控件权重)+ 该控件wrap_content的默认高度;

假设屏幕高度为100dp,有两个屏幕高度设置为match_parent,其中一个权重为1,一个权重为3:

则权重为1的控件所占的高度为:((100dp -100dp*2) / (3+1)*1 + 100dp = 75dp;此时其所占的空间比重为3;

则权重为3的控件所占的高度为:((100dp -100dp*2) / (3+1)*3 + 100dp = 25dp;此时其所占的空间比重为1;

此时在垂直方向上,控件所占的空间就会按照权重的反比进行分配,也就是说,原来分配权重大的占有的比例小,而原来分配权重小的反而占有比例大;


除此之外,权重的分配在在其它控件完成控件分配之后进行的,也就是说,如果没有设置权重的控件和设置权重的控件的同一个父布局中,

要先完成没有设置权重的控件的空间分配,之后剩余的空间作为权重分配的总空间;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值