LinearLayout中的layout_weight属性

LinearLayoutlayout_weight可是个好东西,但是很多人却弄不懂原理,其实知道他的计算公式一切都简单多了

以下只说水平方向的
计算公式

1
View的实际宽度 = View的设置宽度 + 剩余宽度*权重比

是不是还不明白 举个例子你就明白了

假如LinearLayout中有两个TextView textView1和textView2
LinearLayout的宽度是400
textView1content宽度为100
textView2content宽度为150

示例一

textView1的宽度是match_parent
textView2的宽度是match_parent
textView1layout_weight是2
textView2layout_weight是3

那么
textView1的设置宽度就是400
textView2的设置宽度也是400
剩余宽度为LinearLayout的宽度-textView1的宽度-textView2的宽度 = -400
textView1的权重比为2/5
textView2的权重比为3/5
所以
textView1的实际宽度为400+(-400)*2/5=240
textView2的实际宽度为400+(-400)*3/5=160
所以textView2的权重高但实际宽度却较小

示例2

textView1的宽度是wrap_content
textView2的宽度是wrap_content
textView1layout_weight是1
textView2layout_weight是4

那么
textView1的设置宽度就是100
textView2的设置宽度也是150
剩余宽度为LinearLayout的宽度-textView1的宽度-textView2的宽度 = 150
textView1的权重比为1/5
textView2的权重比为4/5
所以
textView1的实际宽度为100+(150)*1/5=130
textView2的实际宽度为150+(150)*4/5=270

按比例分

根据以上两个例子
所以要想textView1分2/5 textView2分3/5
只需要把
textView1设置layout_weight是2
textView2设置layout_weight是3
textView1的宽度设置为0
textView2的宽度设置为0 就可以了