为什么ImageView在布局上消失了?

3

ImageView位于布局的右侧。如果messagedetail_row_text的内容过长,则不会显示。只有当messagedetail_row_text的内容不太长时,ImageView才会显示。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:gravity="right"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/dfdwasdfds"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/outgoing"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="22dip"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/messagedetail_row_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingTop="1dp"
                android:textColor="#000000"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/messagedetail_row_date"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dip"
                android:paddingTop="1dp"
                android:textColor="#000000"
                android:textSize="16sp" />
        </LinearLayout>

        <TextView
            android:id="@+id/messagedetail_row_text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="2dp"
            android:textColor="#000000"
            android:textSize="20sp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        android:layout_toRightOf="@id/dfdwasdfds"
        >

        <ImageView
            android:id="@+id/messagegedetail_rov_icon2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:gravity="right"
            android:src="@drawable/retouxiang" />

    </LinearLayout>

</RelativeLayout>
3个回答

2

我不清楚你具体在寻找什么。根据我的理解:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:gravity="right"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/xyz"
        android:layout_alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        >

        <ImageView
            android:id="@+id/messagegedetail_rov_icon2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:gravity="right"
            android:src="@drawable/retouxiang" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/dfdwasdfds"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/xyz"
        android:background="@drawable/outgoing"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="22dip"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/messagedetail_row_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingTop="1dp"
                android:textColor="#000000"
                android:text="messagedetail_row_name"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/messagedetail_row_date"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dip"
                android:paddingTop="1dp"
                android:text="messagedetail_row_date"
                android:textColor="#000000"
                android:textSize="16sp" />
        </LinearLayout>

        <TextView
            android:id="@+id/messagedetail_row_text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="2dp"
            android:text="messagedetail_row_text and this is a long text"
            android:textColor="#000000"
            android:textSize="20sp" />
    </LinearLayout>

</RelativeLayout>

1
尝试更改

标签。
  <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" 
            android:layout_toRightOf="@id/dfdwasdfds"
            >


to
     <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        android:layout_below="@id/dfdwasdfds"
        >

layout_below 会在内容下方显示图像,但我只想在内容右侧显示图像。 - user2559787
你给了文本宽度属性fill_parent,但父布局的宽度属性是wrap_content,所以当文本很长时,它将占据右侧的空间。没有空间放置ImageView,图片将消失。@user2559787 - Sazzad Hissain Khan
你可以在textView的父布局中尝试使用固定宽度。 - Sazzad Hissain Khan
哦,还有其他解决方案吗?我只想将控件从右到左设置。 - user2559787

0

我认为这是因为您已经将textView的宽度设置为fill_parent,它会占用与其长度相同的空间,然后其父宽度为wrap_content,所以它会一直延伸到其子元素占据的空间(即TextView),因此您没有足够的空间来显示ImageView。

您可以尝试使用LinearLayout作为根布局,而不是RelativeLayout,并通过给它们分配权重来管理您的视图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接