android resolvesize方法,Android 自定义View中onMeasure()中使用resolveSize()是什么意思?
时间: 2023-12-03 11:42:35 浏览: 30
在 Android 中,View 的大小通常由其父 View 和自身的布局参数共同决定。在自定义 View 中,我们需要在 onMeasure() 方法中手动测量 View 的大小。而在测量过程中,我们需要使用 resolveSize() 方法来确保 View 大小的合法性。
resolveSize() 方法的作用是根据提供的大小和测量要求,确定 View 的最终大小。该方法的定义如下:
```java
public static int resolveSize(int size, int measureSpec) {
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:
result = Math.min(size, specSize);
break;
case MeasureSpec.EXACTLY:
result = specSize;
break;
}
return result;
}
```
其中,size 是 View 希望的大小,measureSpec 是由父 View 传递给该 View 的测量要求。根据测量要求的不同,resolveSize() 方法会返回不同的结果:
- 如果测量要求是 UNSPECIFIED,表示 View 可以任意大小,此时返回 size。
- 如果测量要求是 AT_MOST,表示 View 最大不能超过 specSize,此时返回 size 和 specSize 中较小的一个。
- 如果测量要求是 EXACTLY,表示 View 的大小需要精确指定为 specSize,此时返回 specSize。
通过使用 resolveSize() 方法,我们可以确保 View 的大小不会超过父 View 的限制,也不会超过 View 自己所期望的大小。