android linearlayout weight工作原理

阿里线下一面中,

面试官问我,view的渲染过程,回答不会,然后他就问了linearlayout中 weight的工作原理

weight实际上并不能理解为权重。

要把其理解为权重,则要把对应的height/width=“0dp”

设,

linearlayout.orientation=horizonal;

linearlayout.childview[i].weight=ki;

linearlayout.childview[i].width="0dp"

这样就能按照linearlayout的实际宽度来为所有的子view安排满足其权重的宽度。

如果childview[i].layout_width="full_parent"

那么,具体的工作原理可以看这里


简单的概括来说

child.width=child.width+delta*child.weight/sum(child[i].weight);

delta=linearlayout.width-sum(child[i].width);

//delta可以是负的。

所以weight应该理解为当空间不足(多余)时,子view的在原预算大小的基础上进行收缩(伸长)多少?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值