addView()方法是否会为所有子视图调用onMeasure()方法?

3
向ViewGroup(通过ViewGroup.addView())添加子项是否会自动为所有子项调用onMeasure()函数?

你可不可以尝试一下通过打印日志或者使用断点来调试? - Automatico
1个回答

2

ViewGroup应该通过首先测量所有子项来测量其宽度和高度。如果ViewGroup的宽度或高度是wrap_content,则一定会为所有子项调用onMeasure()。关于match_parent不能保证这一点。有一件事情可以肯定,就是addView()会调用requestLayout(),这将重新计算布局子项的位置,并在所有子项上调用layout(l, t, r, b)

要确切知道是否调用了onMeasure(),可以创建一个自定义View并记录每个对onMeasure()的调用,并将其添加到ViewGroup中。不同的ViewGroup实现可能会有所不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接