MeasureSpec是用来告诉View父容器在测量子View的时候应该如何测量的一个规范。它由两部分组成:测量模式和测量大小。
1. 测量模式:共有三种,分别是EXACTLY、AT_MOST和UNSPECIFIED。
- EXACTLY:子View的大小是确定的,父容器会按照子View的大小来测量。
- AT_MOST:子View的大小不能超过父容器的大小,父容器会根据子View的大小来测量,但是不能超过自己的大小。
- UNSPECIFIED:子View的大小没有限制,父容器会根据子View的大小来测量。
2. 测量大小:是一个具体的数值,代表子View在某一个方向上应该占据的大小。
正确解读MeasureSpec值应该根据具体的情况来判断,根据测量模式和测量大小来确定子View应该占据的大小。在自定义View或者重写View的onMeasure方法时,需要根据MeasureSpec来测量子View的大小,并根据测量模式来确定最终的大小。