码迷,mamicode.com
首页 > 其他好文 > 详细

自定义View系统总结之MeasureSpec

时间:2018-12-15 19:48:46      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:ram   一个   实现   int   wrap   转换   就是   不能   content   

  在测量过程中,系统会将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

标签:ram   一个   实现   int   wrap   转换   就是   不能   content   

原文地址:https://www.cnblogs.com/kyun/p/10124198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!