各位大牛
在阅读Android视图measure相关源码时小弟有一处不解,抛出来请各位给分析分析
我们都知道MeasureSpec封装了测量过程中父视图对子视图的要求,即它的0-30位表示size,31-32位表示模式。
那么问题来了,看下面的代码
View.java代码
public static final int MEASURED_STATE_TOO_SMALL = 0x01000000;
public static int resolveSizeAndState(int size, int measureSpec, int childMeasuredState) {
int result = size;
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
switch (specMode) {
case MeasureSpec.UNSPECIFIED:
result = size;
break;
case MeasureSpec.AT_MOST:
if (specSize < size) {
result = specSize | MEASURED_STATE_TOO_SMALL;
} else {
result = size;
}
break;
case MeasureSpec.EXACTLY:
result = specSize;
break;
}