android listview较少的项目填充屏幕

时间:2013-08-31 15:48:10

标签: android android-listview android-linearlayout

我有自定义列表视图布局。列表中的项目将为5或更多。如果不止这些,列表中有5-10个项目,它看起来不错。

但是,如果只有5个项目,那么在高度较大的设备列表下方会出现空格。这看起来不太好。

以下是我的列表行布局 -

<?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:background="#FFF"
    android:orientation="horizontal"
    android:padding="5dip" >

    <TextView
        android:id="@+id/txt_update_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:paddingLeft="10sp"
        android:text="title"
        android:textColor="#b73a3e"
        android:textStyle="bold"
        android:typeface="normal" />

    <TextView
        android:id="@+id/txt_update_excerpt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/txt_update_title"
        android:layout_marginTop="1dip"
        android:focusable="false"
        android:paddingLeft="10sp"
        android:paddingRight="10dp"
        android:text="text"
        android:textColor="#343434"
        android:textSize="15dip" />

    <TextView
        android:id="@+id/txt_uid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dip"
        android:layout_toRightOf="@+id/txt_update_title"
        android:focusable="false"
        android:text="some" />

    <ImageView
        android:id="@+id/arrow"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_alignBottom="@+id/txt_uid"
        android:layout_alignRight="@+id/txt_update_excerpt"
        android:layout_centerInParent="true"
        android:scaleType="centerInside"
        android:paddingRight="5dp"
        android:src="@drawable/arrow" />

</RelativeLayout>

和listview -

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:padding="10dp" >

        <TextView
            android:id="@+id/tag_line"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/tagline"
            android:textColor="#fff" />

        <ListView
            android:id="@+id/list_updates"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:cacheColorHint="#0000"
            android:divider="#00000000"
            android:dividerHeight="0px"
            android:overScrollMode="never" >
        </ListView>
</LinearLayout>

我想要的是,如果设备的高度较大,那么我希望列表通过缩放每行的高度来获取完整的高度,它应该显示所有项目没有滚动。如果项目更多,则应显示滚动。我该怎么设置呢?


更新

我可以选择加入一个解决方案,我会检查之前列表中有多少项目,如果它们小于5-6,我会选择一个不同的布局,包括LinearLayout或者会填补空白。但我无法弄清楚我需要为LinearLayout选择的结构。我应该选择5-6 LinearLayout低于另一个还是单个迭代?

1 个答案:

答案 0 :(得分:1)

嗯,在我看来,如果我需要实现这样的功能,我会像下面这样做:

  • 检查是否存在空白 想要(blankHeight =(ListViewHeight-count * rowHeight)&gt; 0)
  • heightToPlus = blankHeight / count
  • 然后您可以将每行的高度设置为rowHeight + heightToPlus

每个高度都可以通过getHeight获取,也可以通过setHeight设置,它们是查看方法。
所以我觉得实施起来并不难......