600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Android 布局属性 Android:layout_weight 总结

Android 布局属性 Android:layout_weight 总结

时间:2020-07-10 05:33:52

相关推荐

Android 布局属性 Android:layout_weight 总结

Android 为我们提供了五种布局方式

线性布局:LinerLayout表格布局:TableLayout相对布局:RelativeLayout绝对布局:AbsoluteLayout帧布局:FrameLayout

其中最常用的应该就是线性布局了。而在线性布局中有一个属性layout_weight。这个属性的字面意思是权重,就是说可以通过这个属性来设置控件在线性布局中的大小比例。

但是在使用中我们发现,当线性布局中的控件使用match_parent时控件大小与权重比例居然相反,而使用wrap_content时甚至weight甚至毫无作用。这是为什么呢?

按照Google官方的说法,layout_weight属性是用来分配Linerlayout中剩余的屏幕空间的。

现在我们来做一下算术题:

假设屏幕宽度是W,LinerLayout的布局方式是横向,宽度是屏幕宽度即W。Linerlayout中有两个控件,宽度都是match_parent即W.现在定义两个控件左边的为2,右边的为1.

现在我们来算一下,两个控件的宽度:

剩余宽度S = W - 2*W = -W.

左边控件分配到的剩余宽度SL = (2/3)*S =-(2/3)W

右边控件分配到的剩余宽度SL = (1/3)S = -(1/3)W

那么左边控件的实际宽度就是-(2/3)W+W = (1/3)W

那么右边控件的实际宽度就是-(1/3)W+W = (2/3)W

于是权重设置为2:1 但实际显示效果却是1:2就是这样来的。有兴趣的同学可以算一下使用wrap_content时显示的比例。可以发现根本毫无规律。

那么我们就不用layout_weight这一属性了吗?

当然不是

按照Google官方推荐的方法,在使用layout_weight时。可以将width设置为0dp(当然布局方式是竖向的时候是height)。

希望对看到这篇文章的人有帮助:D

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。