为了调剂一下心情,穿插一篇Android基础文档。
一、 简介
android:layout_weight在LinearLayout中布局属性。根据权重布局。
二、 功能介绍
android:layout_weight的默认值是0。
当layout_weight被设置为有效值的时候,布局会计算两次。
布局的计算公式:
View的大小=View所占空间+父容器的剩余空间*权重比。
三、 使用
使用layout_weight布局时,一般有两种方式
l android:layout_width=”0dp” ---- Google推荐
l android:layout_width=”match_parent”
当layout_width=”0dp”时,权重值越大View所占的空间越大
当layout_width=”match_parent”时,权重值越大View所占的空间越小
套用布局的计算公式:
设父LinearLayout的长度为L,子View个数为N
View的大小=View所占空间+父容器的剩余空间*权重比。
当layout_width=”0dp”时,View的大小= 0 + (L- 0*N)* 权重比
当layout_width=” match_parent”时,View的大小= L + (L – L*N)* 权重比
有趣的例子:
导入实际数值:子View个数为3,权重分别是1、2、3
权重为1的View:
当layout_width=”0dp”时,View的大小 = 0 + (L- 0*3)* 1/6 = L/6
当layout_width=”match_parent”时,View的大小= L + (L – L*3)* 1/6=L+ (-2L)/6= 4L/6
权重为2的View:
当layout_width=”0dp”时,View的大小 = 0 + (L- 0*3)* 2/6 = 2L/6
当layout_width=”match_parent”时,View的大小= L + (L – L*3)* 2/6=L+ (-4L)/6= 2L/6
权重为3的View:
当layout_width=”0dp”时,View的大小 = 0 + (L- 0*3)* 3/6 = 3L/6
当layout_width=”match_parent”时,View的大小= L + (L – L*3)* 3/6=L+ (-4L)/6= 0L/6=0
这里会发现[权重为3的View]在宽度为match_parent时计算得到的宽度为0!!
PS:
父控件可以设置一个神奇的属性使weight布局更灵活,android:weightSum="1”