对LinearLayout线性布局中Layout_weight的误解
来源:互联网 发布:快图浏览 知乎 编辑:程序博客网 时间:2024/04/28 21:12
Google Android开发入门与实战,第二版,P104倒数第七行括弧内容:(layout_weight越小权重越大)。
SDK中的原话:Indicates how much of the extra space in the LinearLayout will be allocated to the view associated with these LayoutParams. Specify 0 if the view should not be stretched. Otherwise the extra pixels will be pro-rated among all views whose weight is greater than 0.
这是什么意思呢?主要是两个关键点:extra space和pro-rated among all views,额外的空间和大小比例
说到额外的空间,不得不提另外几个属性,假设LinearLayout的android:orientation="horizontal",即水平分布,在三个控件的存在情况下,其layout_weight属性值分别为122(单个控件在某些情况下会标警示黄线,请自己尝试):
第一种情况:每个控件的宽度属性都为android:layout_width="0dp",那么额外的空为(手机的宽度假设为X)X-0-0-0=X,那么根据sdk上所述:
第一个控件的宽度为 0+(1/(1+2+2))*X=X/5
第二个控件的宽度为 0+(2/(1+2+2))*X=2X/5
第三个控件的宽度为 0+(2/(1+2+2))*X=2X/5
第二种情况:每个控件的宽度属性都为android:layout_width="match_parent",那么额外的空间就是X-X-X-X=-2X
第一个控件的宽度为 X+(1/(1+2+2))*(-2X)=3X/5
第二个控件的宽度为 X+(2/(1+2+2))*(-2X)=X/5
第三个控件的宽度为 X+(2/(1+2+2))*(-2X)=X/5
第三种情况:其中第一个控件宽度属性为android:layout_width="match_parent",其他两个控件宽度为android:layout_width="0dp",额外的空间为X-X-0-0=0
第一个控件的宽度为 X+(1/(1+2+2))*0=X
第二个控件的宽度为 0+(2/(1+2+2))*0=0
第三个控件的宽度为 0+(2/(1+2+2))*0=0
第四种情况:第一个和第二个控件宽度属性为android:layout_width="match_parent",第三个控件宽度为android:layout_width="0dp",这个大家自己动手算算,结果很有趣。
最终结论:layout_weight的公式
控件的宽度(高度)=控件的width(height)值+(该控件的weight值/所有控件的weight的和)×额外的空间
额外的空间=手机的宽度(高度)-所有控件的宽度(高度)
有质疑的可以自己去写个代码尝试一下,希望都能踏踏实实的学习、工作,少点人云亦云,有自己的思想,网络上有关layout_weight的文章大部分都是错误的,希望本帖可以帮助一部分人。
- 你们对LinearLayout线性布局中Layout_weight的误解
- 你们对LinearLayout线性布局中Layout_weight的误解
- 对LinearLayout线性布局中Layout_weight的误解
- 你们对LinearLayout线性布局中Layout_weight的误解
- LinearLayout布局的Layout_weight
- LinearLayout布局的Layout_weight
- Linearlayout线性布局中layout_weight权重分配不起作用?
- 线性布局LinearLayout layout_weight属性(转)
- android 线性布局LinearLayout之layout_weight用法
- LinearLayout布局的layout_weight属性
- android LinearLayout布局中layout_weight的使用(一)
- android LinearLayout布局中layout_weight的使用(二)
- Android:LinearLayout布局中Layout_weight的深刻理解
- Android:LinearLayout布局中Layout_weight的深刻理解
- Android:LinearLayout布局中Layout_weight的深刻理解
- Android:LinearLayout布局中Layout_weight的深刻理解
- Android:LinearLayout布局中Layout_weight的深刻理解
- Android:LinearLayout布局中Layout_weight的深刻理解
- node.js hello world
- 算法学习第一课静态顺序表操作
- cocos2dx anrdoid crash log查看
- IE6的window.location.href问题
- C/C++笔试面试常见题目2
- 对LinearLayout线性布局中Layout_weight的误解
- 配置sublime 编译运行c++
- FireFox插件SQLite Manager的使用
- java中组件的paint(Graphics g)与paintComponent(Graphics g)的区别
- 第9周项目5:本月有几天?
- 7.模版方法模式
- 按某类型对齐的C代码实现
- vim的颜色修改,高亮设置。
- delphi WebBrowser的使用方法详解(三)