首页 > 解决方案 > match_parent 和 wrap_content 约束布局的问题

问题描述

我在使用 ConstraintLayout 时遇到问题,以便将包装的内容放入我的布局中。每次我放置包装内容时,布局设计都会像被破坏一样。有人可以帮助我吗?它是关于在日期时间和消息状态之前包装消息的内容。谢谢!

在这里,我留下两张图片,一张带有 match_parent,另一张带有包装的内容:

match_parent_image

在此处输入图像描述

wrap_content_image

在此处输入图像描述

<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="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/message_sent_background">

<TextView
    android:id="@+id/textViewChatMessage"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginBottom="8dp"
    android:textAppearance="?attr/textAppearanceListItem"
    android:textColor="@android:color/black"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/textViewChatMessageDate"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:text="Test message sent!" />

<TextView
    android:id="@+id/textViewChatMessageDate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="4dp"
    app:layout_constraintBottom_toBottomOf="@+id/imageViewChatMessageStatus"
    app:layout_constraintEnd_toStartOf="@+id/imageViewChatMessageStatus"
    app:layout_constraintStart_toEndOf="@+id/textViewChatMessage"
    app:layout_constraintTop_toTopOf="@+id/imageViewChatMessageStatus"
    tools:text="12:02" />

<ImageView
    android:id="@+id/imageViewChatMessageStatus"
    android:layout_width="18sp"
    android:layout_height="18sp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@drawable/ic_message_waiting" />

</androidx.constraintlayout.widget.ConstraintLayout>

标签: javaandroidandroid-layoutandroid-recyclerviewandroid-constraintlayout

解决方案


Wrap_content 告诉你的元素占用你需要的空间,这可能会导致图像占用它需要的空间,如果你希望你的元素保持在约束中,你应该使用 0dp,在约束布局中 0dp 是匹配父级,0dp 做什么is 告诉您元素填充约束,无论您的图像是大于还是小于约束。

请读一读,它解释了如何约束布局。


推荐阅读