在wrap_content中的ViewGroup match_parent

时间:2017-06-24 05:48:56

标签: android android-layout relativelayout viewgroup android-wrap-content

有一个带有wrap_content布局参数的LinearLayout。我在其中有几个视图与match_parent参数。我们来看看。

案例1:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="#990000"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="#004400">
    </RelativeLayout>
</LinearLayout>

enter image description here

案例2:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="#990000"
    android:orientation="vertical">

    <Button
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:text="What a terrible failure!"
        android:background="#009900"/>
</LinearLayout>

enter image description here

案例3:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="#990000"
    android:orientation="vertical">

    <View
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="#000099"/>
</LinearLayout>

这是预期的行为。视图被绘制。 由于声誉低于10,我无法发布第三张图片。谢谢stackoverflow! :)

所有示例都在真实设备上进行测试,而不仅仅是在Android工作室预览中。

来自android Develop - &gt; API指南 - &gt;用户界面 - &gt;布局: wrap_content - 告诉您的视图将自身调整为其内容所需的尺寸。

考虑第二种情况。我仍然可以理解按钮有内容,父视图只接受按钮文本和填充 - 它是“内容”。

但是第一种情况呢?孩子清楚地说“我想用match_parent绘制”。 我知道RelativeLayout没有子节点,但它不应该打扰父容器或它应该吗?

或者,如果Android通过请求“内容大小”(OnMeasure)尝试降低到较低级别,那么为什么我们需要设置宽度。如果它如此聪明并为我决定一切?

这到底发生了什么?我不明白。为什么心动?

1 个答案:

答案 0 :(得分:0)

不会打扰。第一种情况下的子宽度将与其父级相同,因为您将match_parent设置为wrap_content宽度父级。并且子项的高度将小于/大于父项,因为您指定了高度的精确值。