当前位置: 首页 > 知识库问答 >
问题:

ViewGroup match_parent位于wrap_content内

郑富
2023-03-14

有一个具有wrap_content布局参数的线性布局。我里面有几个带有 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>

案例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。谢谢stackoverflow!:)

所有示例都是在真实设备上测试的,而不仅仅是在android studio预览中。

来自android开发-

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

但第一个案例呢?孩子明确地说:“我想被match_parent吸引”。我知道RelativeLayout没有子项,但它不应该打扰父容器,还是应该?

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

这里到底发生了什么?我不明白。为什么它的心脏?

共有1个答案

盖锐
2023-03-14

不会麻烦的。在第一种情况下,子节点的宽度将与其父节点相同,因为您将其match_parent设置为wrap_content宽度的父节点。子节点的高度将与父节点一样小/大,因为您为高度指定了精确的值。

 类似资料:
  • 在Android中,和,用于根据小部件包含的内容自动调整小部件的大小。 在Flutter中,默认情况下似乎所有小部件都设置为,我将如何更改它,以便我可以将其和填充为其父级?

  • 我得到了一堆我想用fresco加载的抽屉,我想用size来处理这些图像,我怎么用xml用fresco来做呢?或者,如果xml是不可能的,您如何在代码中实现它? 上面的代码不起作用,除非我设置了固定的大小。

  • 我正在尝试将RecyclerView居中,但其layout_width为wrap_content时未成功 当RecyclerView被给定任何确定的layout_width(比如200dp)时,它会居中,否则它只会向左对齐。 如何使回收器视图center_horizontal,当其layout_width wrap_content?

  • 我见过的变通方法,但没有。有什么想法吗?

  • 我希望当我的edittext为空时,它的高度是40px,也就是说,它只占用一行的空间。当输入文本时,高度会增加。它应该在高度上更像WRAP_CONTENT,但我希望一旦它达到(5*40px)或200px的高度,即5行的空间。它不再增加了。它的行为就好像它的高度是固定的200像素。我如何访问这种类型的高度功能。 请尝试通过提供编程引用而不是 XML 引用来提供帮助。提前致谢...

  • 背景: 我有一个与RelativeLayout父母的BottomSheetDialog。我有一个子ScrollView在一些视图下面持有一个TextView,在ScrollView下面有一个底部TextView。我需要ScrollView根据它保存的文本大小来Wrap_Content,并将底部TextView保持在ScrollView下面的父底部。当ScrollView内容很大时,就没有问题了。但

  • 我有一个<code>滚动视图,其中包含一个垂直<code>线性布局 这是一个地方,我在这里添加了一些称为“Section”的视图。“Section”是一个,其中包含和`RecyclerView'。 部分: 问题是,有时并不是真正的。因此,它创建了两种类型的问题(取决于我尝试使用的解决方案类型)。 > < li> 它可以是不可滚动的(因此它与屏幕高度匹配,我不能向下滚动它来查看里面的其余项目)。 它

  • 我知道很多文章描述了如何使listView项的展开/折叠动画化,但我就是无法使其工作:-( 我有一个listView,其中每个项目都包含一个隐藏的LinearLayout元素ll(view.gone),我希望使用动画展开/折叠ll。我的问题是--显然--LL的高度可变。ll的高度设置为wrap_content,因为它包含一个描述和一些图像。 我所看到的挑战是,我一开始就把LL的生存能力设定为.消失