Android如何使列表项高度增加以容纳内容

时间:2013-07-22 13:01:27

标签: android android-layout listview android-listview android-xml

我使用的是一个简单的ListView,其中每个项目只包含一个文本字段,而不包含任何其他内容。 这是列表项的xml代码:

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/listPreferredItemHeight">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" 
            android:layout_marginLeft="6dp"
            android:layout_marginRight="6dp"
            android:layout_marginTop="4dp"
            android:layout_marginBottom="4dp"
            android:background="@drawable/bg_card">


        <TextView
            android:id="@+id/txt"
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:gravity="center_vertical"
            android:textSize="15sp"
            android:paddingLeft="6dip"
            android:textColor="#878787"
            android:textIsSelectable="true"/>

        </LinearLayout>

    </FrameLayout>

这是我使用列表视图的片段布局。

    <?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:layout_height="match_parent"
        android:background="#e5e5e5">

    <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:dividerHeight="0dp"
        android:divider="@null"/>

    </RelativeLayout>

现在,在像我这样的片段中创建适配器的对象

Level weather_data[] = new Level[] {
    new Level(R.drawable.s1, 
              "Some text which will be present in the list item",      
              R.drawable.play_button)
        };

如果我在第二个参数(即文本)中有一个很长的句子,则它的某些部分不会显示,并且在列表项中显示的句子不完整。

我尝试使用android:minHeight来更改列表项的高度,但它不起作用。有什么可以解决这个问题? 感谢

2 个答案:

答案 0 :(得分:0)

将容器设置为wrap_content就足够了,并在需要时调整容器大小。您显示的布局不完整,我只是怀疑您可能会在这里做一些事情:

android:layout_height="?android:attr/listPreferredItemHeight

此外,您的布局中没有真正的要点在TextView中包裹LinearLayout,然后在FrameLayout中包裹FrameLayout。您可以使用填充获得相同的效果,并将bg移至{{1}}

答案 1 :(得分:0)

尝试在wrap_content内设置"?android:attr/listPreferredItemHeight"而不是android:layout_height

这样的事情:

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">