关于 android 权重 weight在布局中的理解和使用

1 父布局 wrap_content 依赖子布局时  
子布局 无论是 依赖自己wrap_content、还是match_parent依赖父布局、还是为0使用weight
子布局尺寸 都是 自己原有尺寸。

父     match_parent  match_parent   wrap_content  wrap_content
子     match_parent  wrap_content   wrap_content  match_parent 
结果   match_parent  wrap_content   wrap_content  wrap_content  

当且仅当父子 布局都为 match_parent  的时候 自布局才会变大。剩下的组合关系 都是子布局原有尺寸。
子布局不变大 父布局能否变大都没有用 子布局能变大父布局不变大也没用。


父布局为 依赖自己wrap_content  时 子布局只能也是依赖自己原有尺寸 此时 权重不起作用!
当且仅当父布局为matchparent 时 子布局才有可能扩大 权重才起作用。

仔细理解权重指的是   剩余量的占比!
###############
0  父布局设置 wapcontent时子布局权重不起作用


1  measure 两次 设置权重属性的组件 和不设置权重的组件 同时计算
   第一次measure   所有组件的原有高度尺寸
   第二次 measure  先计算剩余尺寸 依据剩余尺寸 计算出有权重属性组件尺寸

        计算公式 组件尺寸 = 组件原有尺寸 +  剩余尺寸*权重比


3 剩余尺寸:   是指 现有组件的所有尺寸总和 — 屏幕尺寸 <结果极有可能为负数>
   计算公式 组件尺寸 = 组件原有尺寸 + (现有组件的所有尺寸总和 — 屏幕尺寸 )*权重比

 
以下为转载
设屏幕宽度为L,在两个view的宽度都为match_parent的情况下,原有宽度为L,两个的View的宽度都为L,
那么剩余宽度为L-(L+L) = -L, 左边的View占比三分之一,所以总宽度是L+(-L)*1/3 = (2/3)L.
事实上默认的View的weight这个值为0,一旦设置了这个值,那么所在view在绘制的时候执行onMeasure两次的原因就在这。

Google官方推荐,当使用weight属性时,将width设为0dip即可,效果跟设成wrap_content是一样的。
这样weight就可以理解为占比了!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值