您的位置:首页 > 移动开发 > Android开发

Android layout_weight 计算方式详解

2014-03-28 00:44 246 查看
学习自: 计算公式:/article/8833225.html


范例:/article/1332705.html

适用范围仅LinearLyout.

假设:LinearLayout为android:orientation="horizontal", layout_weight属性值分别为1、2、2

第一种情况:每个控件的宽度属性都为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

最终结论:layout_weight的公式

控件的宽度/高度 = 控件的width/height值+(该控件的weight值/所有控件的weight的和)×额外的空间

额外的空间=手机的宽度/高度-所有控件的宽度/高度

注:如果属性为android:layout_width="wrap_content" 则计算时,总宽/高要减去控件本身占据的宽/高
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: