代码中看出我们只需给View设置默认的宽/高(mWidht/mHeight)就行。
2. ViewGroup的measure过程
ViewGroup不仅要完成自身的measure还要去遍历子元素的measure方法。ViewGroup是一个抽象类,不会重写View的onMeasure,但它提供一个measureChildren的方法,这里面去对每个子View进行measure,调用measureChild方法
上述方法就是取出子View的LayoutParams,然后通过getChildMeasureSpec来创建子元素的MeasureSpec,接着给子View传入MeasureSpec。
ViewGroup自身的onMeasure各个子类去具体实现。为什么不把每个ViewGroup都统一的onMeasure呢?因为不同的ViewGroup实现细节有很多不同,比如LinearLayout和RelativeLayout就有很多不同。
这里我们做个任务,就是在Activity启动时去获取一个View的宽/高。难处是Activity在启动时onCreate、onStart、onResume中均无法获取View宽/高,不知道measure在什么时候执行完毕,如果没有测完获得的宽高就是0,这里给出四种方法来解决:
(1)