【发布时间】:2017-11-27 17:31:46
【问题描述】:
有一个带有 wrap_content 布局参数的 LinearLayout。我在其中有几个带有 match_parent 参数的视图。一起来看看吧。
案例一:
<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>
案例 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>
案例 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,我无法发布第三张图片。感谢堆栈溢出! :)
所有示例均在真实设备上进行测试,而不仅仅是在 android studio 预览版中。
来自 android Develop -> API Guides -> 用户界面 -> 布局: wrap_content - 告诉您的视图将自身调整到其内容所需的尺寸。
考虑第二种情况。我仍然可以理解按钮有内容,而父视图只接受按钮文本和填充 - 它是“内容”。
但是第一种情况呢?孩子明确地说“我想用match_parent绘制”。 我知道RelativeLayout没有孩子,但它不应该打扰父容器还是应该?
或者,如果Android试图通过请求“内容大小”(OnMeasure)来降低水平,那么为什么我们需要设置宽度。如果它那么聪明,为我决定一切?
这里到底发生了什么?我不明白。为什么会心动?
【问题讨论】:
标签: android android-layout android-relativelayout viewgroup android-wrap-content