如何制作可滚动的ListView而不是填满整个屏幕?

时间:2011-08-31 17:37:44

标签: android android-layout android-listview

我想在顶部制作带有TextView的屏幕(标题) 一个ListView在中间 和底部的按钮。 如何放置ListView,它将填充顶部TextView和底部按钮之间的整个空间,并能够滚动其内容?

现在,当我的列表增长时,它会在屏幕外按下底部按钮。

我有:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <Button android:id="@+id/button1"
        android:layout_height="wrap_content"
        android:text="Button"
        android:layout_width="wrap_content"
    />
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:layout_alignParentBottom="true"
    />
    <ListView android:id="@+id/lvLocations"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
    />
    <TextView android:layout_height="0dip"
        android:layout_width="fill_parent"
        android:layout_weight="1" 
    />
    <Button android:text="LayerDrawable"
        android:id="@+id/button5"
        android:textSize="15dp"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:background="@drawable/layer_drawable"
    />

</LinearLayout>

最后TextView用于填补空白并将Button移至底部。

4 个答案:

答案 0 :(得分:13)

使用LinearLayout。使用layout_weight="1"ListView设置为layout_height="fill_parent"。去除其他元素的重量。

<ListView android:id="@+id/lvLocations"
  android:layout_width="match_parent"
  android:layout_height="fill_parent"
  android:layout_weight="1"
></ListView>

答案 1 :(得分:3)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal">
    <TextView
        android:id="@+id/title"
        android:text="arg0"
        android:gravity="center"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" android:textStyle="bold"/>
  </LinearLayout>

  <ListView
      android:id="@+id/list"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" 
      android:layout_weight="1"/>

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal">
    <Button
        android:id="@+id/prevButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="Previous" 
        android:layout_weight="1"/>
    <Button
        android:id="@+id/nextButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="Next" 
        android:layout_weight="1"/>
  </LinearLayout>

</LinearLayout>

这正是我设置的方式,而且效果很好。

答案 2 :(得分:0)

将所有元素换成layoutLinearLeyoutRelativeLayout

答案 3 :(得分:0)

你可以使用android的帮助:layout_below =&#34;&#34;和android:layout_above =&#34;&#34;达到预期的效果。 希望这可以帮助。