TextView高度在父级伸展,重力正确。为什么?

时间:2016-05-25 11:05:01

标签: android xml gravity

我正在进行聊天活动并遇到正确的聊天泡泡问题。如下图所示。 TextView伸展身高。根据我的想法,它应该首先拉伸宽度,然后如果空间已满,它应该伸展高度。如果可以使用xml,请建议我。我见过java代码解决方案,但我想首先在xml中找到一个解决方案。

image

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>

1 个答案:

答案 0 :(得分:0)

用这个替换你的两个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>

注意:我删除了您的背景以进行测试。