通过观看大神博客和自身试验,目前对于onMeasure也有一定了解;
接下来就将心得随心记下:
1.view自身有onMeasure(计算)、onLayout(布局)、onDraw(绘画),
onMeasure:它的调用顺序是由下往上调用,即每个子控件自身发生变化后,会先调用自身的方法重新计算自己大小,然后再调用父控件的方法;
onMeasure(widthMeasureSpec,heightMeasureSpec);
可以通过获取:
- int widthMode = MeasureSpec.getMode(widthMeasureSpec);
- int heightMode = MeasureSpec.getMode(heightMeasureSpec);
- int widthSize = MeasureSpec.getSize(widthMeasureSpec);
- int heightSize = MeasureSpec.getSize(heightMeasureSpec);
其中specMode一共有三种可能:
MeasureSpec.EXACTLY:父视图希望子视图的大小应该是specSize中指定的。
MeasureSpec.AT_MOST:子视图的大小最多是specSize中指定的值,也就是说不建议子视图的大小超过specSize中给定的值。
MeasureSpec.UNSPECIFIED:我们可以随意指定视图的大小。
默认情况下view的尺寸模式是UNSPECIFIED
默认情况下view的尺寸模式是
UNSPECIFIED