使listview可滚动以仅适合屏幕的一部分

时间:2015-01-15 13:48:04

标签: android android-layout

我想让我的listview只能滚动到屏幕的一部分,我在屏幕下方显示的其他设计很少,下面是我的代码,其中我添加了layout-weight = 1我已经推荐了其他帖子。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25dp"
        android:textStyle="bold"
        android:text=" Computer Languages..." />

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

</LinearLayout>

3 个答案:

答案 0 :(得分:2)

<ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" >
</ListView>

编辑:下面是您对ListView进行更改的布局文件,作为测试,我添加了一个TextView,它应该强制ListView为其提供所需的空间。如果您在模拟器中,在手机上测试此布局,或在Eclipse / AS中进行预览,它就会完全符合预期。

如果此布局无法正常使用,那么此处还有其他功能,也许您正在以编程方式修改布局,但如果没有其他信息/代码,我可以&#39;说。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

   <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25dp"
        android:textStyle="bold"
        android:text=" Computer Languages..." />

    <ListView android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:layout_weight="1" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="25dp"
        android:textStyle="bold"
        android:text="test test text" />

</LinearLayout>

答案 1 :(得分:-1)

最好的方法是使用RelativeLayout

<RelativeLayout
  ...
 >
<TextView 
 android:id="@+id/firstview"
 ...
 />
 <ListView
  android:layout_below="@+id/firstview"
  android:layout_above="@+id/lastview"
 ...
 />
  <TextView 
 android:id="@+id/lastView"
  />
</RelativeLayout>

答案 2 :(得分:-1)

只需在同一个LinearLayout中的同一级别上将您的视图添加到ListView下方。也就是说,您可能希望在ListView中设置layout_height="0dp"(这样它的高度不需要再测量一次),从而提高性能。这对ListView项特别有用。只要你保持其他观点&#39; layout_weights未设置(或将它们设置为0),ListView占用所有剩余空间。