LinearLayout中layout_weight可是个好东西,但是很多人却弄不懂原理,其实知道他的计算公式一切都简单多了
以下只说水平方向的
计算公式
1 | View的实际宽度 = View的设置宽度 + 剩余宽度*权重比 |
是不是还不明白 举个例子你就明白了
假如LinearLayout中有两个TextView textView1和textView2LinearLayout的宽度是400textView1的content宽度为100textView2的content宽度为150
示例一
textView1的宽度是match_parenttextView2的宽度是match_parenttextView1的layout_weight是2textView2的layout_weight是3
那么textView1的设置宽度就是400textView2的设置宽度也是400
剩余宽度为LinearLayout的宽度-textView1的宽度-textView2的宽度 = -400textView1的权重比为2/5textView2的权重比为3/5
所以textView1的实际宽度为400+(-400)*2/5=240textView2的实际宽度为400+(-400)*3/5=160
所以textView2的权重高但实际宽度却较小
示例2
textView1的宽度是wrap_contenttextView2的宽度是wrap_contenttextView1的layout_weight是1textView2的layout_weight是4
那么textView1的设置宽度就是100textView2的设置宽度也是150
剩余宽度为LinearLayout的宽度-textView1的宽度-textView2的宽度 = 150textView1的权重比为1/5textView2的权重比为4/5
所以textView1的实际宽度为100+(150)*1/5=130textView2的实际宽度为150+(150)*4/5=270
按比例分
根据以上两个例子
所以要想textView1分2/5 textView2分3/5
只需要把textView1设置layout_weight是2textView2设置layout_weight是3textView1的宽度设置为0textView2的宽度设置为0 就可以了