基础知识
View/ViewGroup 绘制流程分三步,分别是 测量onMeasure() , 布局onLayout(),绘制onDraw()。getMeasuredWidth()是在measure过程后就可以获取到的,getWidth()是在layout()过程结束后才能获得到的
测量onMeasure
测量当前控件大小,为onLayout提供参考值,真正布局是在onLayout实现,传进来的int widthMeasureSpec, int heightMeasureSpec 包含宽/高 布局模式和值。
自定义View的情况
我们就要根据不同的Mode的情况去设定我们的宽高,例如在MeasureSpec.AT_MOST下给出我们自己的最小宽高,在MeasureSpec.EXACTLY的情况下直接传给出的值等等。其实android已经给我们封装好方法resolveSize,我们直接调用即可。
自定义ViewGroup的情况
我们需要在ViewGroup的onMeasure()去测量自己的子控件的宽高,从而保存ViewGroup自身的尺寸,然后在onLayout()下对子控件进行排列位置。
布局
自定义ViewGroup的情况
|
|