LinearLayout的onMeasure测量流程

1. 概述


下边通过示例代码分析, LinearLayout 的 onMeasure 流程:
场景:LinearLayout中有 3个 TextView,方向为垂直方向





    

        
        
        
    


LinearLayout的 垂直方向,测量流程如下:
从最外层的 ViewRootImpl 向最里层的 TextView 递归:
1>:把 ViewRootImpl 的测量模式 传递给 DecorView,然后 DecorView 把测量模式 传递给 LinearLayout,然后 LinearLayout通过for循环把 测量模式给 TextView,最后 TextView把 测量模式给 setMeasuredDimension,这个方法 此时就会指定 TextView 的宽高;
2>:等 测量好宽高后,就表示 所有子View的宽高已经测量完毕,此时 LinearLayout 会拿 所有子View的高度,就是 3个TextView的高度,来测量自己的高度;

如下图所示:


LinearLayout的onMeasure测量流程_第1张图片
图片.png

2. LinearLayout和RelativeLayout高度的计算


1>:LinearLayout:如果是垂直方向,就叠加所有子view高度;
2>:RelativeLayout:如果高度是 wrap_content,那么高度取 子孩子中 高度最高的;

你可能感兴趣的:(LinearLayout的onMeasure测量流程)