多次调用子视图上的度量()

时间:2016-06-19 14:02:19

标签: android layout

android docs中有一些东西:

  

父视图可能会对其子项多次调用measure()。例如,父母可以用未指定的维度测量每个孩子一次以找出他们想要的大小,然后如果所有孩子的无约束大小的总和太大或太小,则用实际数字再次对他们调用measure()(也就是说,如果孩子们不同意他们每人得到多少空间,那么父母就会在第二次通过时进行干预和制定规则。

SDK /文档/导向/主题/ UI /如何-机器人-draws.html

我不自然;谁能说出他在说什么? 为什么有些人认为对孩子们来说多次调用measure()? LinearLayout中发生了什么?

1 个答案:

答案 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,则可以避免在父级别进行多次传递。但事实并非如此。如果不让我知道的话,我希望我明白我的观点。