onMeasure:是View所用方法,直接完成测量。
MeasureSpec:32位int值,
高两位代表SpecMode(测量模式),
低30位代表SpecSize(测量大小)
getMode:获取测量模式
UNSPECIFIED:父容器不对View有任何限制,一般用于系统内部
EXACTLY:父容器已经检测出View所需的精确大小,最终大小就是SpecSize的值,
对应于LayoutParams中的MATCH_PARENT和具体的数值这两种模式
AT_MOST:父容器指定一个可用的大小即SpecSize,View的大小不能大于这个值,
具体是什么值,由View去实现。对应于LayoutParams中的WRAP_CONTENT
getSize:获取测量大小
子元素的MeasureSpec创建与父容器的MeasureSpec、子元素的LayoutParams、padding、margin有关
makeMeasureSpec(mode,size):组装成一个MeasureSpec
LayoutParams
LayoutParams.MATCH_PARENT:精确模式,大小就是父元素大小
LayoutParams.WRAP_CONTENT:最大模式,大小不定,但是不能超过父元素的大小
固定大小:精确模式,大小为LayoutParams中指定的值
可用方法
getMeasuredHeight:获取到View测量后的高
setMeasuredDimension:根据SpecMode来设置大小,在这里实现wrap_content