从整体看
- 测量流程:从根View递归调用每一级子View的
measure( )
方法,对他们进行测量 - 布局流程:从根View递归调用每一级子View的
layout( )
方法,把测量过程得出子View的位置和尺寸传给子View,子View保存
从个体看,对于每个View
- 运行前,开发者在xml文件里写入对View的布局要求layout_xxx
- 父View在自己的
onMeasure( )
中,根据开发者在xml中写的对子View的要求,和自己的可用空间,得出对子View的具体尺寸要求。 - 子View在自己的
onMeasure( )
中根据自己的特性算出自身的期望尺寸- 如果是ViewGroup,还会在这里调用每个子View的
measure( )
进行测量
- 如果是ViewGroup,还会在这里调用每个子View的
- 父View在子View计算出期望尺寸后,得出子View的实际尺寸和位置
- 子View在自己的
layout( )
方法中,将父View传进来的自己的实际尺寸和位置保存
-如果是ViewGroup,还会在onLayout( )
里调用每个字View的layout( )
把他们尺寸位置给他们