安卓中layout_weight的认识

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,所以会显示如上图的效果。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值