在使用线性布局时可以使用layout_weight设置权重,但是其设置的权重为剩余空间的权重。
例如下面布局为将6个横向线性布局放在一个纵向线性布局中各个线性布局的 宽高均为android:layout_width=“match_parent”,android:layout_height=“match_parent”,想将其分成1:2:2:2:2:1的比例

第1行比重算法:
1match-6match=-5match :
剩余空间为-5match,按1:2:2:2:2:1的比例分为10份每份为5/10假设第一行比重为x,可知第一行目标宽度为1/10match,计算过程中match省略。
那么1+(-5/10)x=1/10 解得x=9/5
第2行比重算法:
1+(-5/10)x=2/10 解得x=8/5:
所以第一行和第二行的比重为9:8
如果将上面的高设置为“0dp”的时候, 第一行和第二行的比重为1:2效果相同。
结论:
所以当我们设置纵向线性布局(也就是线性布局的android:orientation=“vertical”)如果想要设置纵向比重,最好将空间的 android:layout_height设置为"0dp";如果设置横向线性布局(也就是线性布局的android:orientation=“horizontal”)如果想要设置纵向比重,最好将空间的 layout_width设置为"0dp"。
本文详细解析了在Android开发中使用线性布局时如何通过layout_weight属性来精确控制子视图的空间分配比例,尤其针对1:2:2:2:2:1等复杂比例的情况,介绍了计算权重的具体算法,并提供了将布局高度设为0dp以实现更精确的垂直比例控制的技巧。

2488

被折叠的 条评论
为什么被折叠?



