Skip to content
阅读进度

measure layout draw 和 dispatchDraw 分别负责什么? ​

返回 View 与显示链路 目录

标准回答 ​

measure 依据父容器约束和自身期望确定 measuredWidth 与 measuredHeight;layout 根据父容器给定的边界确定实际位置和大小,ViewGroup 再在 onLayout 中放置子 View;draw 组织背景、自身内容、子内容和前景等绘制阶段。普通控件的主要内容在 onDraw 中绘制,ViewGroup 通过 dispatchDraw 遍历并绘制子 View。自定义 View 重点实现测量和自身绘制,自定义 ViewGroup 还必须负责子 View 的测量和布局。

延伸追问 ​

ViewGroup 是否绘制自身内容还受 willNotDraw 等条件影响;dispatchDraw 负责子节点,不等于整个 draw。

内容来源 ​

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