奇葩属性:layout_weight 的解释及使用
来源:互联网 发布:win10视频桌面软件 编辑:程序博客网 时间:2024/04/30 12:23
在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-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%平均分割:
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 原来是可以这么用滴
- 奇葩属性:layout_weight 的解释及使用
- 奇葩属性:layout_weight 的解释及使用
- 奇葩属性:layout_weight 的解释及使用
- 奇葩属性:layout_weight 的解释及使用
- layout_weight 的解释及使用
- layout_weight属性的使用
- android UI 之layout_weight 的解释及使用
- Android布局属性Layout_weight的标准解释
- android:layout_weight属性的使用
- android:layout_weight属性的使用
- 关于layout_weight属性的使用
- Android layout_weight的奇葩特性
- 在Android的控件布局中,有一个奇葩的 layout_weight 属性
- layout_weight及相关属性
- LinearLayout中的layout_weight属性 的使用
- Layout_weight属性的使用与理解
- Android layout_weight属性使用
- Android布局中的layout_weight和weightSum属性的详解及使用
- 另一种阶层
- C语言结构体内存访问的问题
- csip开源程序的安装和编译
- Android开发学习之四大组件
- c++中 static 变量和函数能否被子类继承
- 奇葩属性:layout_weight 的解释及使用
- 从头到尾实现deque
- 三、小贝学习cocos2dx——ecplise编译cocos2dx项目
- 动手学Android之四——布局初步(一)
- poj 1035 Spell checker
- spring - constructor-arg 的使用
- js判断是否为IE浏览器
- alsjkdsjfsgdfkryk
- Unicode字符集下WriteFile中文处理