6

我使用下面发布的布局通过将该布局作为一行膨胀到 ListView 中来显示消息。问题是它适用于单行消息,但是当有 2 行或更多行时,ImageView指示消息状态被推离屏幕,无法得到原因。有任何想法吗?布局代码和截图如下。

在此处输入图像描述

那是膨胀的布局:

    <?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
   android:layout_height="match_parent"
    android:padding="5dp" >

<TextView
    android:id="@+id/tvTimestamp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:text="TextView"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textSize="8sp" />

<LinearLayout
    android:id="@+id/rl_message_holder"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_toRightOf="@+id/tvTimestamp"
    android:background="@drawable/outgoing_bg"

    android:orientation="horizontal" >

    <TextView
        android:id="@+id/tvMessageOutgoing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="4dp"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <ImageView
        android:id="@+id/imgMessageState"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_gravity="bottom"
        android:src="@drawable/ic_launcher" />

  </LinearLayout>

 </RelativeLayout>
4

5 回答 5

9

改变你的线性布局宽度 fill_parent

并在 textview 中添加 android:layout_weight="1"

于 2013-01-31T09:51:53.413 回答
4
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="5dp" >

    <TextView
        android:id="@+id/tvTimestamp"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="20"
        android:gravity="center_vertical"
        android:text="10:20pm"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textSize="8sp" />

    <RelativeLayout
        android:id="@+id/rl_message_holder"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="80" >

        <TextView
            android:id="@+id/tvMessageOutgoing"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/imgMessageState"
            android:padding="4dp"
            android:singleLine="false"
            android:text="android developer tutorial in the world"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <ImageView
            android:id="@+id/imgMessageState"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_gravity="bottom"
            android:contentDescription="@string/app_name"
            android:src="@drawable/ic_launcher" />
    </RelativeLayout>

</LinearLayout>
于 2013-01-31T09:46:44.873 回答
2

这对我有用

<TextView
        android:id="@+id/tvMessageOutgoing"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:padding="4dp"
        android:layout_weight="1"
        android:text="Medium Tesssssssssssssssssssssssssssssseeeeeeeessssxt"
        android:textAppearance="?android:attr/textAppearanceMedium" />

它为 textview 提供了剩余空间。

于 2013-01-31T09:48:09.710 回答
1

像这样试试

   <LinearLayout
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="0.6"
          >

          <ImageView
        android:id="@+id/imgMessageState"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_gravity="bottom"
        android:src="@drawable/ic_launcher" />

        </LinearLayout>

在线性布局中定义您的图像视图布局

于 2013-01-31T09:46:58.390 回答
0

您可以使用

android:drawableRight="@drawable/ic_launcher"
于 2013-01-31T09:54:18.420 回答