TextView 高度在父级中以重力向右延伸。为什么?

TextView height stretches in parent with gravity right. why?

我正在聊天 activity 并且右侧聊天气泡有问题。如下图所示。 TextView 拉伸高度。根据我的想法,它应该首先在宽度方向上拉伸,然后如果 space 已满,它应该在高度方向上拉伸。请建议我是否可以使用 xml。我看过 java 代码解决方案,但我想先在 xml 中找到解决方案。

layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:orientation="horizontal"
android:paddingBottom="10dp"
android:paddingTop="10dp">

<View
    android:layout_width="0dp"
    android:layout_height="1dp"
    android:layout_weight="20" />

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="80"
    android:gravity="right">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="20dp"
        android:background="@drawable/ic_bubble_sent"
        android:gravity="right">

        <TextView
            android:id="@+id/txt_msg_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_toLeftOf="@+id/txt_message_time"
            android:layout_toStartOf="@+id/txt_message_time"
            android:textSize="16sp"
            android:text="Lorem"
            android:visibility="visible" />

        <TextView
            android:id="@+id/txt_message_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/txt_msg_content"
            android:layout_marginTop="-9dp"
            android:text="00:33"
            android:textColor="@color/colorAppGray"
            android:textSize="12sp"
            android:textStyle="normal" />
    </RelativeLayout>
    </LinearLayout>
</LinearLayout>

用这个替换你的两个 TextView

        <TextView
            android:id="@+id/txt_msg_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16sp"
            android:text="Lorem"
            android:visibility="visible"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@+id/txt_message_time"
            android:layout_toStartOf="@+id/txt_message_time"
            android:layout_marginRight="32dp"
            android:layout_marginEnd="32dp" />

        <TextView
            android:id="@+id/txt_message_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="00:33"
            android:textSize="12sp"
            android:textStyle="normal"
            android:layout_alignBaseline="@+id/txt_msg_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />

我删除了第一个 TextView 中所有不必要的对齐方式。

更新 整体布局看起来像,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingBottom="10dp"
    android:paddingTop="10dp">

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="20" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="80"
        android:gravity="right">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            >

            <TextView
                android:id="@+id/txt_msg_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"

                android:textSize="16sp"
                android:text="Lorem"
                android:visibility="visible"
                android:layout_alignParentTop="true"
                android:layout_toLeftOf="@+id/txt_message_time"
                android:layout_toStartOf="@+id/txt_message_time"
                android:layout_marginRight="32dp"
                android:layout_marginEnd="32dp" />

            <TextView
                android:id="@+id/txt_message_time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"

                android:text="00:33"

                android:textSize="12sp"
                android:textStyle="normal"
                android:layout_alignBaseline="@+id/txt_msg_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true" />
        </RelativeLayout>

    </LinearLayout>
</LinearLayout>

注意:为了测试我删除了你的背景。