ViewGroup match_parent 里面 wrap_content

Posted

技术标签:

【中文标题】ViewGroup match_parent 里面 wrap_content【英文标题】:ViewGroup match_parent inside wrap_content 【发布时间】:2017-11-27 17:31:46 【问题描述】:

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

案例一:

<LinearLayout
    android:layout_
    android:layout_
    android:background="#990000"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_
        android:layout_
        android:background="#004400">
    </RelativeLayout>
</LinearLayout>

案例 2:

<LinearLayout
    android:layout_
    android:layout_
    android:background="#990000"
    android:orientation="vertical">

    <Button
        android:layout_
        android:layout_
        android:text="What a terrible failure!"
        android:background="#009900"/>
</LinearLayout>

案例 3:

<LinearLayout
    android:layout_
    android:layout_
    android:background="#990000"
    android:orientation="vertical">

    <View
        android:layout_
        android:layout_
        android:background="#000099"/>
</LinearLayout>

这是预期的行为。视图已绘制。 由于声望不到 10,我无法发布第三张图片。感谢堆栈溢出! :)

所有示例均在真实设备上进行测试,而不仅仅是在 android studio 预览版中。

来自 android Develop -> API Guides -> 用户界面 -> 布局: wrap_content - 告诉您的视图将自身调整到其内容所需的尺寸。

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

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

或者,如果Android试图通过请求“内容大小”(OnMeasure)来降低水平,那么为什么我们需要设置宽度。如果它那么聪明,为我决定一切?

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

关于宽度:在情况 3 相同条件下为其他情况添加高度,而不是第一次。 所有案例都与案例 3 相同。如您所说。 我的意思是在案例 2,3 中为清楚起见插入了高度。这不重要。关于宽度,您没有回答任何新问题。我自己看到了这些参数。我知道这是什么意思。我很困惑,因为我无法理解这些示例的总体逻辑。它们相互矛盾。 我可以接受RelativeLaout的内容为空的说法。但是 Button 和 View 有区别(为什么?覆盖 onMeasure 效果?)。我知道 Button IS-A TextView IS-A View。案例3有屏幕link

以上是关于ViewGroup match_parent 里面 wrap_content的主要内容,如果未能解决你的问题,请参考以下文章

xml中不能直接添加ViewGroup

viewGroup绘制流程

[Android]PopupWindow 点击外部区域无法关闭的问题

[Android]PopupWindow 点击外部区域无法关闭的问题

布局管理器ViewGroup

Android事件分发机制总结