android LinearLayout - ImageView被推离屏幕

时间:2013-01-31 09:35:10

标签: android android-linearlayout relativelayout

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

enter image description here

这是夸大的布局:

    <?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>

5 个答案:

答案 0 :(得分:9)

更改线性布局宽度fill_parent

并在textview中添加android:layout_weight =“1”

答案 1 :(得分: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>

答案 2 :(得分: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提供剩余的空间。

答案 3 :(得分: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>

在线性布局

中定义图像视图布局

答案 4 :(得分:0)

您可以使用

android:drawableRight="@drawable/ic_launcher"