阿里线下一面中,
面试官问我,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的在原预算大小的基础上进行收缩(伸长)多少?