layout_weight,即权重,仅支持在线性布局中使用
之前认为权重的意思就是各个组件在某一行或某一列中所占父控件的比例大小,但现在才知道这是错的。权重应该是指将某行或某列屏幕剩余空间的的比例分配给组件。
现在我们仅以LinearLayout的水平布局来说。设在本布局中有两个button按钮。
当把这两个button的宽度设为wrap_content时,若这两个屏幕都设置权重为1,很明显这两个button的大小会各占屏幕的一半。如果这两个button的权重分别设为1和2时可能就有人说这两个button会分别占这个屏幕的1/3和2/3.但其实这是不对的。
我们可以试验一下,如果我们把这两个按钮的权重设成1和100000的话如下图所示:
效果如下:
从效果上看这两个按钮并没有按照1/10001和10000/10001的比例去显示
其实权重应该是指将屏幕剩余空间的的比例分配给组件
列个公式:剩余空间 = 屏幕宽度-2*wrap_content;如果这两个按钮的权重设为1和10000的话,则第一个按钮宽度:wrap_content+剩余空间*1/10001
第二个按钮的宽度与:wrap_content+剩余空间*10000/10001
当button的宽度设为match_parent时,同样,如果我们把这两个按钮的权重设为1,1时他们呈现的效果同样是两个按钮各占屏幕宽度的一半,
当我们把这两个按钮的权重设为1,10000时,效果如下
列个公式:剩余空间 = 屏幕宽度-2*match_parent = -match_parent;如果权重都为1时则每个按钮所占屏幕宽度为:match_parent+剩余空间*1/2 = 剩余空间*1/2;所以这两个按钮会各占屏幕一半,如果这两个按钮权重分别设为1,10000时,第一个按钮所占屏幕为:match_parent+剩余空间*1/10001;
第2个按钮所占屏幕为:match_parent+剩余空间**10000/10001;因为剩余空间为-match_parent,第一个按钮所占宽度几乎上为match_parent,所以会显示如上图的效果。