自定义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