安卓layout_weight详解
Layout_weight的属性一直很奇怪特别对于安卓开发的新手更摸不着头绪,本文根据作者的实践,通过完整的代码对安卓其进行深入介绍
操作方法
- 01
必须要说明:Layout_weight只能用在线性布局;表格布局;以及嵌套在前两种布局中的其他布局
- 02
例1 设置两个: android:layout_width="wrap_content" android:layout_height="wrap_content" 属性的按钮,运行后显示可以发现每个按钮根据自身内容设置了长宽,布局中剩余空间不变
- 03
再看下面代码 例2 我们为每个按钮设置了 android:layout_weight="1"属性运行效果可以看到两个按钮将水平方向上剩余空间给平均分配了再看下面代码例3 我们设置 按钮1 android:layout_weight="1", 按钮2 android:layout_weight="2", 运行效果可以看到按钮2占用的空间要比按钮1大。 例4 按钮1 android:layout_weight="fill_parent" 按钮2 android:layout_weight="fill_parent"在例4中我们将例3中layout_width的值改为"fill_parent"其他不变运行结果如下
- 04
结论。我们现在假设按钮1与按钮2在android:layout_width="wrap_content"时宽=w。布局管理器的宽为l.按钮1的layout_weight为1,按钮2的为2 1.当按钮的宽为w时 按钮1分得的空间为 w+1/(1+2)*(l-2*w) 按钮2分得的空间为 w+2/(1+2)*(l-2*w) 由于2*w<l ,所以l-w一定是正数,所以按钮2的宽一定大于按钮1,且比按钮1多1/3的剩余空间值 2.当按钮宽为l时 按钮1分得的空间为 l+1/(1+2)*(l-2*l) = l+1/3(-l) = 2/3l 按钮2分得的空间为 l+2/(1+2)*(l-2*l) = l+2/3(-l)= 1/3l 因为l-2l<0 所以按钮1 的值为2/3l,按钮2的值为1/3l了,所以按钮1的宽要大于按钮2。