LinearLayout的layout_weight

来源:互联网 发布:小学同步教学软件 编辑:程序博客网 时间:2024/06/11 19:13

之前遇到一个面试题,当时面试官问在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计算剩下空间的比例。


原创粉丝点击