layout_weight 的解释及使用
2016-04-14 14:27
323 查看
layout_weight的解释及使用
转自:http://my.oschina.net/jsan/blog/191492在Android的控件布局中,有一个奇葩的layout_weight属性,定义如下:
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是可以用来进行整个空间的分割的,如果我们让控件的宽度(注:当orientation="horizental"时是layout_width="0dp",当[b]orientation="vertical"时必须是layout_height="0dp"。此时分配给组件的空间大小与[b]layout_weight的值的大小成正比。[/b])定义为0,这样比如2个控件的layout_weight="1"就可以各自50%平分整个空间了[/b],因为:0+1/2空闲空间=0+1/2空闲空间
这是一个小技巧,也是非常实用的一个实用layout_weight分割方案:定义控件的layout_width="0dp"或layout_height="0dp"配上layout_weight就可以实现对整个空间的比例分割了。
下面定义了2个控件的layout_width="0dp",layout_weight="1",实现了水平方向50%平均分割:
相关文章推荐
- C# WinForm 技巧:控件截图
- Tips:SQL server 2012报表服务器error 40报错
- SQL使用case判断
- js使用AjaxFileupload插件实现文件上传
- springmvc 混合视图解决方案
- centos 启动脚本
- Block-layer I/O polling
- OJ
- 软件測试基本方法(三)之黑盒測试
- 10013: 以一种访问权限不允许的方式做了一个访问套接字的尝试【WCF异常】
- WPF 绑定数据方式
- java集合类Stack类
- 在Windows和Linux环境上安装Git并配置同一账户
- 生成时间加流水号的编码
- Swift Runtime分析
- UVa 140 - Bandwidth
- C pirmer Plus(第五版) 第十四章 课后习题 3
- 谈谈eclipse使用技巧二
- JAVA的StringBuffer类
- iOS开发中UITextField限制输入文字个数