增加内部textview高度的listview项高度占用多行

时间:2013-12-24 10:13:49

标签: android listview

我有一个ListView组件,其中包含以下项目布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="wrap_content">

    <ImageView
            android:layout_width="42dp"
            android:layout_height="42dp"
            android:background="@drawable/ic_launcher"
            android:id="@+id/event_listview_item_icon"
            android:contentDescription=""
            android:layout_marginTop="9dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"/>
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/event_listview_item_name"
            android:textSize="18dp"
            android:layout_toRightOf="@+id/event_listview_item_icon"
            android:layout_alignTop="@+id/event_listview_item_icon"
            android:textStyle="bold"
            android:textColor="#FFF"/>
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/event_listview_item_comment"
            android:textSize="14dp"
            android:layout_alignLeft="@+id/event_listview_item_name"
            android:layout_alignBottom="@+id/event_listview_item_icon"/>
</RelativeLayout>

listview看起来像:

enter image description here

但是,如果我想使用占用多行的长注释并包装?

在这种情况下,我得到的结果如下:

enter image description here

你能帮我设计我的xml,使listview项具有灵活的高度吗?如果我使用2或3行评论,一切都会正确显示吗?

已更新

我稍微改变了布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:minHeight="60dp"
        android:layout_height="wrap_content"
        android:gravity="center_vertical">

    <ImageView
            android:layout_width="42dp"
            android:layout_height="42dp"
            android:background="@drawable/ic_launcher"
            android:id="@+id/event_listview_item_icon"
            android:contentDescription=""
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"/>
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/event_listview_item_name"
            android:textSize="18dp"
            android:layout_toRightOf="@+id/event_listview_item_icon"
            android:layout_alignTop="@+id/event_listview_item_icon"
            android:textStyle="bold"
            android:textColor="#FFF"/>
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/event_listview_item_comment"
            android:layout_below="@+id/event_listview_item_name"
            android:textSize="14dp"
            android:layout_alignLeft="@+id/event_listview_item_name"/>
</RelativeLayout>

现在一切都差不多了,除了一件奇怪的事情:

enter image description here

为什么在多行textview的情况下,imageview不是居中垂直的?

5 个答案:

答案 0 :(得分:1)

android:layout_below="@+id/event_listview_item_name"用于要在任何视图下方显示的textview,然后移除android:layout_alignBottom=""

答案 1 :(得分:1)

为第二个textview添加android:layout_below =“@ + id / event_listview_item_name”并删除android:layout_alignBottom =“@ + id / event_listview_item_icon”

答案 2 :(得分:0)

您必须在第二个TextView中添加layout_below并从中删除 alignBottom ,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="wrap_content">

    <ImageView
            android:layout_width="42dp"
            android:layout_height="42dp"
            android:background="@drawable/ic_launcher"
            android:id="@+id/event_listview_item_icon"
            android:contentDescription=""
            android:layout_marginTop="9dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"/>
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/event_listview_item_name"
            android:textSize="18dp"
            android:layout_toRightOf="@+id/event_listview_item_icon"
            android:layout_alignTop="@+id/event_listview_item_icon"
            android:textStyle="bold"
            android:textColor="#FFF"/>
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/event_listview_item_comment"
            android:textSize="14dp"
            android:layout_toRightOf="@+id/event_listview_item_icon"
            android:layout_below="@+id/event_listview_item_name"/>
</RelativeLayout>

答案 3 :(得分:0)

您可以为图片视图添加边距,这会增加您的商品尺寸 设置所有视图中心垂直的重力为

或者在textview

名称下面评论textview
android:layout_below="@+id/event_listview_item_name"

并将其命名为textview

答案 4 :(得分:0)

Hi Please Try This Code Use LinearLayout Insted Of 
Relative Layout Relative layout always creat proble and 
when use it in different device it look different.
    -----------
    <?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="match_parent"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_weight="2"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/event_listview_item_icon"
                    android:layout_width="42dp"
                    android:layout_height="42dp"
                    android:layout_marginLeft="15dp"
                    android:gravity="center"
                    android:background="@drawable/ic_launcher"
                    android:contentDescription="" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/event_listview_item_name"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="dsjfdsssssfgufoioihgfhggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"
                    android:textColor="#FFF"
                    android:textSize="18dp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/event_listview_item_comment"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignLeft="@+id/event_listview_item_name"
                    android:layout_below="@+id/event_listview_item_name"
                    android:textSize="14dp" />
            </LinearLayout>
        </LinearLayout>

    </LinearLayout>