【发布时间】:2026-02-04 21:15:01
【问题描述】:
是否将子级添加到 ViewGroup(通过 ViewGroup.addView() )会自动为所有子级调用 onMeasure() ?
【问题讨论】:
-
你能不能通过做一些日志记录或使用断点来尝试它?
是否将子级添加到 ViewGroup(通过 ViewGroup.addView() )会自动为所有子级调用 onMeasure() ?
【问题讨论】:
ViewGroup 应该通过首先测量所有孩子来测量它的宽度和高度。如果ViewGroup 的宽度或高度是wrap_content,它肯定会为所有孩子调用onMeasure()。不能这么说match_parent。可以肯定的一件事是addView() 调用requestLayout(),这将重新计算布局子级对所有子级调用layout(l, t, r, b) 的位置。
要确定它是否调用,您可以创建自定义 View 并将每次调用记录到 onMeasure() 并将它们添加到 ViewGroup。可能是不同的ViewGroup 实现会有不同的行为。
【讨论】: