在Android的控件布局中,有一个奇葩的 layout_weight 属性
2017-04-18 08:58
363 查看
定义如下:
layout_weight : 用于指定剩余空闲空间的分割比例。用法:
为什么说是奇葩呢?
以上面的布局代码为例,TextView-888 和 TextView-999999 是横向排列的2个控件,它们的layout_weight="1",说明这2个控件平分了所在LinearLayout的剩余的空闲空间, 我们很容易的就误认为这2个控件平分了水平方向的空间,即:各自占据了 50% 的宽度。
其实这是错误的,而是:TextView-999999控件所占据的宽度 > TextView-888所占据的宽度。因为999999字符占据的宽度大于888占据的宽度,即:w(999999) + 1/2空闲空间 > w(888) + 1/2空闲空间。
这就是它奇葩的地方,很容易就让我们一直误认为是整个控件分割空间。到这里,大家一定会认为,这样的话,layout_weight 这个属性就没有什么意义了,原以为它可以分配空间呢,原来只是分割剩余空闲空间。
其实,呵呵,layout_weight 是可以用来进行整个空间的分割的,如果我们让控件的宽度定义为0,这样比如2个控件的 layout_weight="1" 就可以各自50%平分整个空间了,因为:0 + 1/2空闲空间 = 0 + 1/2空闲空间
这是一个小技巧,也是非常实用的一个实用layout_weight分割方案:定义控件的 layout_width="0dp" 或layout_height="0dp" 配上 layout_weight 就可以实现对整个空间的比例分割了。
下面定义了2个控件的 layout_width="0dp", layout_weight="1",实现了水平方向50%平均分割:
下面定义了2个控件的 layout_height="0dp", layout_weight="1",实现了竖直方向50%平均分割:
layout_weight 原来是可以这么用滴
layout_weight : 用于指定剩余空闲空间的分割比例。用法:
<LinearLayout android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_height" android:layout_weight="1" android:text="888"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_height" android:layout_weight="1" android:text="999999"/> </LinearLayout>
为什么说是奇葩呢?
以上面的布局代码为例,TextView-888 和 TextView-999999 是横向排列的2个控件,它们的layout_weight="1",说明这2个控件平分了所在LinearLayout的剩余的空闲空间, 我们很容易的就误认为这2个控件平分了水平方向的空间,即:各自占据了 50% 的宽度。
其实这是错误的,而是:TextView-999999控件所占据的宽度 > TextView-888所占据的宽度。因为999999字符占据的宽度大于888占据的宽度,即:w(999999) + 1/2空闲空间 > w(888) + 1/2空闲空间。
这就是它奇葩的地方,很容易就让我们一直误认为是整个控件分割空间。到这里,大家一定会认为,这样的话,layout_weight 这个属性就没有什么意义了,原以为它可以分配空间呢,原来只是分割剩余空闲空间。
其实,呵呵,layout_weight 是可以用来进行整个空间的分割的,如果我们让控件的宽度定义为0,这样比如2个控件的 layout_weight="1" 就可以各自50%平分整个空间了,因为:0 + 1/2空闲空间 = 0 + 1/2空闲空间
这是一个小技巧,也是非常实用的一个实用layout_weight分割方案:定义控件的 layout_width="0dp" 或layout_height="0dp" 配上 layout_weight 就可以实现对整个空间的比例分割了。
下面定义了2个控件的 layout_width="0dp", layout_weight="1",实现了水平方向50%平均分割:
<LinearLayout android:orientation="horizontal"> <TextView android:layout_width="0dp" android:layout_height="wrap_height" android:layout_weight="1" android:text="888"/> <TextView android:layout_width="0dp" android:layout_height="wrap_height" android:layout_weight="1" android:text="999999"/> </LinearLayout>
下面定义了2个控件的 layout_height="0dp", layout_weight="1",实现了竖直方向50%平均分割:
<LinearLayout android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="888"/> <TextView android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="999999"/> </LinearLayout>
layout_weight 原来是可以这么用滴
相关文章推荐
- android 布局控件中 Layout_weight属性
- android布局中的layout_weight属性
- Android 布局之LinearLayout 子控件weight权重的作用详析
- Android布局中Layout_weight的属性
- Android布局属性Layout_weight的标准解释
- 使用android:layout_weight属性来给view group中各个控件设置所占空间大小比重
- Android 布局 LinearLayout 的 layout_weight 属性
- Android中设置半个屏幕大小且居中的按钮布局 (layout_weight属性)
- 【Android】利用相对布局布置更新软件的style为主题对话框的Activity,利用layout_weight属性对表格布局的行划分
- Android布局中Layout_weight属性详细介绍
- Android 布局之LinearLayout 子控件weight权重的作用详析
- Android视图控件属性layout_weight的作用
- 我的Android进阶之旅------>关于android:layout_weight属性的一个面试题
- android布局元素的layout_weight属性
- Android布局之Layout_weight属性解析
- 布局属性:android:layout_weight完全解读!
- Android常用布局属性解析 -- Layout_weight
- Android百分比布局之layout_weight属性
- Android 布局之LinearLayout 子控件weight权重的作用详析(转)