layout_weight与gravity属性详解

点滴知识,重在积累。

layout_weight

layout_weight使用于线性布局中,其意义简单来说就是分配剩余空间的一个属性,可以用来设置权重,先来看看在layout_width="0dp"和layout_width="match_parent"下效果。

当layout_width="0dp"时

layout_weight与gravity属性详解_第1张图片
layout_weight_1.png
text_1.png

系统先给3个TextView分配他们的宽度值0dp,然后会把剩下来的屏幕空间按照1:2:2的比例分配给3个TextView,所以显示了如图text_1中的比例分配。

当layout_width="match_parent"时

layout_weight与gravity属性详解_第2张图片
layout_weight_2.png
text_2.png

当TextView的宽度为match_parent的时候如图显示3:1:1,原因是系统先给他们分配宽度值为match_parent,然后把剩余的空间(match_parent- match_parent- match_parent- match_parent =-2match_parent)按照1:2:2比例分配给它们:
text1: match_parent+(-2match_parent)/5=3(match_parent)/5

text2:match_parent+(-2match_parent)*2/5=(match_parent)/5

text3:match_parent+(-2match_parent)*2/5=(match_parent)/5
所以会如图text_2显示3:1:1 。

layout_weight与gravity属性详解_第3张图片
layout_weight_3.png
text_3.png

同上面的算法就会出现如text_3显示(有兴趣可以自己动手算一算)。

gravity,layout_gravity

android:gravity这个属性是指本元素所有子元素的重力方向
layout_gravity这个是本元素相对父元素的重力方向


layout_weight与gravity属性详解_第4张图片
gravity.png

如果gravity和layout_gravity同时出现时,则子元素的优先 如图

layout_weight与gravity属性详解_第5张图片
gravity_1.png

你可能感兴趣的:(layout_weight与gravity属性详解)