Skip to content
阅读进度

MeasureSpec 三种模式怎么理解? ​

返回 View 与显示链路 目录

标准回答 ​

EXACTLY 表示父容器指定尺寸;AT_MOST 表示不能超过给定上限;UNSPECIFIED 表示本轮测量没有给出同类上限约束。MeasureSpec 同时包含模式和大小,不能只读取大小而忽略模式。

机制解释 ​

wrap_content 不等于自动知道内容宽高。自定义 View 要计算期望尺寸,加上 padding,再结合父约束调用 resolveSize 等方法。match_parent 也不能脱离父容器当前的测量条件简单理解。

延伸追问 ​

自定义进度控件 wrap_content 占满父布局怎么办?检查是否直接使用父容器提供的最大尺寸,忽略了自己的期望尺寸;同时检查最小尺寸和 padding 的计算。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。