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

如何强制空的ConstraintLayout填充其父容器?

濮阳鸿祯
2023-03-14

我正在使用constraintlayout作为覆盖层。它应该和它的父容器一样宽和一样高。然而,由于某种奇怪的原因,它不是垂直填充其父级的(而是水平填充)。下面是相关的XML:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.home.HomeFragment">

    <androidx.constraintlayout.widget.ConstraintLayout  <-- This is the overlay
        android:id="@+id/overlay"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#80000000"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

使用上面的代码,覆盖层也不可见(其高度为0dp)。当我在内部放置TextView时,它会展开以适应TextView。简而言之,它的行为就好像它的高度被设置为wrap_content

我如何强制它装满它的容器,同时让它空着?

共有1个答案

蓬新
2023-03-14

问题很可能是您的尺寸规格。来自ConstraintLayout的文档:

重要提示:对于包含在ConstraintLayout中的小部件,不建议使用MATCH_PARENT。类似的行为可以通过使用MATCH_CONSTRAINT,将相应的left/right或top/bottom约束设置为“parent”来定义。

确实应该有一个林特规则,否则ConstraintLayout应该拒绝match_parent

 类似资料:
  • 基本步骤:-用户点击一个web按钮,此在线web应用程序背后的系统向用户发送一封带有PDF文档的电子邮件,该文档包含用户保存的应用程序的所有细节,例如全名、邮编、dob、一些问题的答案(tickboxes)、自由文本注释区-用户打开此PDF,更改一些细节,例如更新注释区的文本、取消勾选某些复选框、更改邮政代码-用户保存更改并将PDF发送回我们。-系统读取PDF、解析内容并更新数据库中的数据。 上述

  • 问题内容: 当大小为非本机时,我希望有一个内嵌svg元素的内容比例。当然,我可以将其作为单独的文件并像这样进行缩放。 index.html: foo.svg: 但是,我想通过CSS向SVG添加其他样式,因此链接外部样式不是一种选择。如何制作嵌入式SVG秤? 问题答案: 要独立于SVG图像的缩放大小指定SVG图像内的坐标,请使用SVG元素上的属性来定义图像的边界系统在图像的坐标系中,并使用和属性来定

  • 我知道我可以在前面将edge inset存储为变量,并在这两个地方都使用它,但当我试图学习Flutter时,我更好奇是否有一种方法可以读取父小部件的值/属性,以便它们的子部件可以动态引用它们。

  • 我的TabPane似乎只能水平填充其宽度,而不能垂直填充。我现在的解决方法是这样做: 但是,如果我使用该高度,它显然比实际保留的区域大(在TabPane上方有一个菜单栏)。(或者它是否适当地调整了它的大小?它也有点感觉不对,我必须设置简单的布尔值,因为它的行为完全符合水平变化的预期。 场景是这样设置的: 当然还有更多的代码,但它只包含与拖放相关的侦听器,并且这个问题发生在他们中的任何一个做任何事情

  • 我最近刚刚开始使用Swing为程序创建GUI,到目前为止,使用它非常有趣。但是,我对布局设置为gridLayout的JPanel有一个问题。现在它看起来像这样: 右边的网格是一个设置为GridLayout的JPanel,每个单元格都是一个带边框的JLabel。左边的选项也在JPanel中,左边的JPanel和右边的JPanel嵌套在JFrame上设置的GridBagLayout中。 本质上,我的问

  • 我试图用getter方法而不是字段来强制hibernate使用setter,但没有成功 我试图在字段上使用,但不起作用 如何强制hibernate调用setter方法填充类字段?