TextView 忽略了较长文本和第二行的边界。如何解决?

TextView is ignoring its boundaries with longer text and second line. How to fix that?

下面是包含两个文本视图的简单 ConstraintLayout 的代码。

经典聊天气泡。当我扩展 "message_body" Textview 的文本长度时,一切都按预期工作,直到父级到达其左边框 (marginLeft=100dp)。

"message-body" Textview 没有向第二行添加更多文本,而是继续扩展一段时间超出其边界,并在最终转到下一行之前弄乱了我的布局。我该如何解决这个问题,这真的让我发疯。

提前感谢这个伟大的社区!


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/myMessage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:layout_marginLeft="100dp"
    android:layout_marginTop="4dp"
    android:layout_marginRight="4dp"
    android:background="@drawable/my_message">


    <TextView
        android:id="@+id/message_body"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="0dp"
        android:layout_marginEnd="0dp"
        android:elevation="0dp"
        android:gravity="left"
        android:padding="10dp"
        android:text="try make this text than one line"
        android:textColor="#fff"
        android:textSize="12dp"
        app:layout_constraintEnd_toStartOf="@+id/timestamp"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/timestamp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toEndOf="@+id/message_body"
        android:elevation="0dp"
        android:padding="5dp"
        android:text="10:00"
        android:textColor="#fff"
        android:textSize="8dp"
        app:layout_constraintEnd_toEndOf="parent"
         />


</androidx.constraintlayout.widget.ConstraintLayout>

截图:

short_text

medium_still_good

now it chrashes left and right border

tried your advice but looks like this now

dmitris solution looks like this on my side atm

尝试使用 android:layout_width="0dp" 以便系统正确应用约束。

您的 TextView 缺少这些:

android:layout_width="0dp"
android:textAlignment="textEnd"

.

<TextView
        android:id="@+id/message_body"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="0dp"
        android:layout_marginEnd="0dp"
        android:elevation="0dp"
        android:padding="10dp"
        android:text="try make this text than one line"
        android:textColor="#fff"
        android:textSize="12dp"
        android:textAlignment="textEnd"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="@id/timestamp" />

以上代码应该可以解决您的问题,但我还建议您修复 Android Studio 为您突出显示的所有警告 - 添加 1 个垂直约束到 TextViews