在安卓View的measure过程中,measureSpec扮演着重要的作用。MeasureSpec是一个32位的int,前2位代表模式,其中00代表UNSPECIFIED,01代表EXACTLY,10代表ATMOST,后30位代表具体大小,例如1073741824模式为EXACTLY,大小为1080。这三种模式的具体意思如下图
在ViewGroup中有一个getChildMeasureSpec方法用于根据父ViewGroup的MeasureSpec模式和子view的wrap_content、match_parent或xxdp确定子view的MeasureSpec模式,具体规则如下图,第二行是父view调用子view的measure函数测量的时候传递的参数,childSize是子view的大小(没错,是父view包办的婚姻,子view只是执行),parentSize是父view的剩余大小(表示子view的大小自己测,但是不要超出这个大小),0表示父view对子view没有任何约束,想多大就多大。