在Android的控件布局中,有一个奇葩的layout_weight属性,定义如下:

layout_weight :用于指定剩余空闲空间的分割比例。用法:

01 <LinearLayout
02 android:orientation="horizontal">
03
04 <TextView
05 android:layout_width="wrap_content"
06 android:layout_height="wrap_height"
07 android:layout_weight="1"
08 android:text="888"/>
09
10 <TextView
11 android:layout_width="wrap_content"
12 android:layout_height="wrap_height"
13 android:layout_weight="1"
14 android:text="999999"/>
15
16 </LinearLayout>

为什么说是奇葩呢?

以上面的布局代码为例,TextView-888TextView-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%平均分割:

01 <LinearLayout
02 android:orientation="horizontal">
03
04 <TextView
05 android:layout_width="0dp"
06 android:layout_height="wrap_height"
07 android:layout_weight="1"
08 android:text="888"/>
09
10 <TextView
11 android:layout_width="0dp"
12 android:layout_height="wrap_height"
13 android:layout_weight="1"
14 android:text="999999"/>
15
16 </LinearLayout>

下面定义了2个控件的 layout_height="0dp", layout_weight="1",实现了竖直方向50%平均分割:

01 <LinearLayout
02 android:orientation="vertical">
03
04 <TextView
05 android:layout_width="wrap_content"
06 android:layout_height="0dp"
07 android:layout_weight="1"
08 android:text="888"/>
09
10 <TextView
11 android:layout_width="wrap_content"
12 android:layout_height="0dp"
13 android:layout_weight="1"
14 android:text="999999"/>
15
16 </LinearLayout>

layout_weight 原来是可以这么用滴

更多相关文章

  1. 自定义View实现图片的绘制、旋转、缩放
  2. cordova 图标设置
  3. Android(安卓)ImageView.ScaleType详解
  4. Android(安卓)Touch 事件的分发和消费机制
  5. Android开发 常用控件罕见特殊属性集锦
  6. android 让ImageView的图片全屏填充
  7. Android(安卓)调用相册 拍照 实现系统控件缩放 切割图片
  8. 在android style.xml文件中使用自定义属性
  9. Android使用控件ImageView加载图片的方法

随机推荐

  1. android获取通讯录
  2. android使用actionbar与fragment
  3. android 酷欧天气完整项目
  4. 触摸事件的机制
  5. ui?
  6. Android Volley的简单使用
  7. Android与JS通过JSBridge(BridgeWebView
  8. 下载显示网路图片的例子
  9. Android中的双击事件,GestureDetector无效
  10. android 设置 TextEdit 组件滚动条自动滚