向ViewGroup(通过ViewGroup.addView())添加子项是否会自动为所有子项调用onMeasure()函数?
ViewGroup
应该通过首先测量所有子项来测量其宽度和高度。如果ViewGroup
的宽度或高度是wrap_content,则一定会为所有子项调用onMeasure()
。关于match_parent不能保证这一点。有一件事情可以肯定,就是addView()
会调用requestLayout()
,这将重新计算布局子项的位置,并在所有子项上调用layout(l, t, r, b)
。
要确切知道是否调用了onMeasure()
,可以创建一个自定义View
并记录每个对onMeasure()
的调用,并将其添加到ViewGroup
中。不同的ViewGroup
实现可能会有所不同。