android docs中有一些东西:
父视图可能会对其子项多次调用measure()。例如,父母可以用未指定的维度测量每个孩子一次以找出他们想要的大小,然后如果所有孩子的无约束大小的总和太大或太小,则用实际数字再次对他们调用measure()(也就是说,如果孩子们不同意他们每人得到多少空间,那么父母就会在第二次通过时进行干预和制定规则。
SDK /文档/导向/主题/ UI /如何-机器人-draws.html
我不自然;谁能说出他在说什么? 为什么有些人认为对孩子们来说多次调用measure()? LinearLayout中发生了什么?
答案 0 :(得分:0)
考虑这个布局
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some text so that width is not zero"/>
</LinearLayout>
让我们来看看如何计算宽度:
当父级有wrap_content且子级也有wrap_content时。这就是发生的事情,
测量第一个父母。由于width是wrap_content,parent的宽度将为0(父级没有填充)。
现在孩子将被测量。让我们说它的TextView带有一些文字。现在textview有一些东西,所以它的宽度可以测量。(比如100dp)
现在再次测量父级,这次它有一个宽度为100dp的子级。所以现在父宽度变为100dp。
如果我们使用match_parent,则可以避免在父级别进行多次传递。但事实并非如此。如果不让我知道的话,我希望我明白我的观点。