自定义View系统总结之MeasureSpec

Posted kyun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义View系统总结之MeasureSpec相关的知识,希望对你有一定的参考价值。

  在测量过程中,系统会将View的LayoutParams根据父容器所施加的规则转换成对应的MeasureSpec,然后再根据这个mesureSpec来测量出View的宽/高。

MeasureSpec代表一个32位int值,高2位代表SpecMode(测量模式),低30位代表SepcSize(指在某种测量模式下的规格大小)。

SpecMode有三类:

UNSPECIFIED:父容器不对VIew有任何限制,要多大给多大,这种情况一般用于系统内部,表示一种测量的状态。

EXACTLY:父容器已经检测出View所需要的精确大小,这个时候View的最终大小就是SpecSize所指定的值。它对应于LayoutParams中的match_parent和具体的数值这两种模式。

AT_MOST:父容器指定了一个可用大小即SpecSize,View的大小不能大于这个值,具体是什么值要看不同View的具体实现。它对应于LayoutParams中的wrap_content。

以上是关于自定义View系统总结之MeasureSpec的主要内容,如果未能解决你的问题,请参考以下文章

Android自定义 View 系列-MeasureSpec

Android自定义 View 系列-MeasureSpec

Android自定义 View 系列-MeasureSpec

Android自定义 View 系列-MeasureSpec

自定义控件知识储备-LayoutParams的那些事

自定义控件知识储备-LayoutParams的那些事