外观
MeasureSpec 三种模式怎么理解?
标准回答
EXACTLY 表示父容器指定尺寸;AT_MOST 表示不能超过给定上限;UNSPECIFIED 表示本轮测量没有给出同类上限约束。MeasureSpec 同时包含模式和大小,不能只读取大小而忽略模式。
机制解释
wrap_content 不等于自动知道内容宽高。自定义 View 要计算期望尺寸,加上 padding,再结合父约束调用 resolveSize 等方法。match_parent 也不能脱离父容器当前的测量条件简单理解。
延伸追问
自定义进度控件 wrap_content 占满父布局怎么办?检查是否直接使用父容器提供的最大尺寸,忽略了自己的期望尺寸;同时检查最小尺寸和 padding 的计算。
内容来源
- Android 智能硬件 SDK 技术 Wiki · 原条目
Q10