阿里线下一面中,
面试官问我,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的在原预算大小的基础上进行收缩(伸长)多少?
本文解析了LinearLayout中weight属性的工作原理,特别是在水平布局下如何通过设置子视图的宽度为0dp并指定weight值来实现按比例分配空间。同时讨论了当空间不足或多余时,子视图如何基于原有大小进行伸缩。
2751

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



