一、FrameLayout源码
measure
1.首先测量每一个子View,根据子View的宽高和自身的margin进行累加来得出一个宽高,然后跟自身的背景大小比较取一个最大的大小
2.记录下每一个match_parent的子View。重新测量他们宽高
layout
会根据每一个子view的gravity来设定位置
二、LinearLayout源码
参考资料
1.遍历所有子View
2.判断是否有分割线,有的话将添加分割线的宽度
3.如果是精确模式将暂时不测量子View,这些view将在LinearLayout确定有剩余位置的时候测量
4.如果不是高度将是子view的不断累加的高度以及边距的和
注意:如果LinearLayout是精确的长度,但子空间是match-parent且设置了权重,那么期望高度是负数。所以dp设置0和设置成match—parent的比例是相反的
网友评论