LinearLayout的layout_weight

之前遇到一个面试题,当时面试官问在720P的显示设备上,一个LinearLayout中水平放置两个view,一个宽=100dp的view和一个宽=200dp的view但是宽是100dp的layout_weight=8,宽是200dp的layout_weight=3;这个时候,他们的宽高实际测量的结果是多少?

在这个问题之前,使用layout_weight这个属性的大部分用途是均分或者按比例分配viewGroup中子view所占的空间比例,而且都是内容多的比例就大,内容少的比例就小,突然碰到这样一个少见的现象还真有点说不上来,就没答上来,只是说实际宽度大的那个还是占比大一些,具体占多少还真不清楚,当时面试官也没针对这个问题说太多,意思是没用过也正常就不刁难你了,回去好好看一看研究一下。

今天突然想起来了,就在手机上运行试了一下,Log如下:

看完log,就很清楚了,720的屏幕宽,100dp和200dp展示到屏幕分别是200px和400px。然后还剩下120px,因为设置了layout_weight属性会让LinearLayout二次测量,测量后,将剩下的120px,按照8:3的权重均分给了两个view,一个是87,一个是33,基本是是8:3的一个比例。

到这里,能看出假如没有设置宽高,直接wrapContent,会直接按照parentView的宽高按照比例分配,如果设置了,会先计算设置的,然后再按照layout_weight计算剩下空间的比例。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值