在Android的控件布局中,有一个奇葩的layout_weight属性,定义如下:
layout_weight :用于指定剩余空闲空间的分割比例。用法:
02 |
android:orientation = "horizontal" > |
05 |
android:layout_width = "wrap_content" |
06 |
android:layout_height = "wrap_height" |
07 |
android:layout_weight = "1" |
11 |
android:layout_width = "wrap_content" |
12 |
android:layout_height = "wrap_height" |
13 |
android:layout_weight = "1" |
14 |
android:text = "999999" /> |
为什么说是奇葩呢?
以上面的布局代码为例,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%平均分割:
02 |
android:orientation = "horizontal" > |
05 |
android:layout_width = "0dp" |
06 |
android:layout_height = "wrap_height" |
07 |
android:layout_weight = "1" |
11 |
android:layout_width = "0dp" |
12 |
android:layout_height = "wrap_height" |
13 |
android:layout_weight = "1" |
14 |
android:text = "999999" /> |
下面定义了2个控件的 layout_height="0dp", layout_weight="1",实现了竖直方向50%平均分割:
02 |
android:orientation = "vertical" > |
05 |
android:layout_width = "wrap_content" |
06 |
android:layout_height = "0dp" |
07 |
android:layout_weight = "1" |
11 |
android:layout_width = "wrap_content" |
12 |
android:layout_height = "0dp" |
13 |
android:layout_weight = "1" |
14 |
android:text = "999999" /> |
layout_weight 原来是可以这么用滴
- 自定义View实现图片的绘制、旋转、缩放
- cordova 图标设置
- Android(安卓)ImageView.ScaleType详解
- Android(安卓)Touch 事件的分发和消费机制
- Android开发 常用控件罕见特殊属性集锦
- android 让ImageView的图片全屏填充
- Android(安卓)调用相册 拍照 实现系统控件缩放 切割图片
- 在android style.xml文件中使用自定义属性
- Android使用控件ImageView加载图片的方法
随机推荐
-
android获取通讯录
-
android使用actionbar与fragment
-
android 酷欧天气完整项目
-
触摸事件的机制
-
ui?
-
Android Volley的简单使用
-
Android与JS通过JSBridge(BridgeWebView
-
下载显示网路图片的例子
-
Android中的双击事件,GestureDetector无效
-
android 设置 TextEdit 组件滚动条自动滚