我正在尝试在一个线性布局中滚动列表视图,但是它无法按我的要求工作。我附上一张图片,以进行更多说明。这是我的布局
<android.support.v7.widget.CardView
android:id="@+id/card"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:clickable="false"
app:cardBackgroundColor="@android:color/white"
app:cardElevation="2dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="false">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:id="@+id/listView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center|bottom"
android:orientation="vertical">
<Button
android:id="@+id/findSelected"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center"
android:background="@drawable/flat_selector_green"
android:text="Next"
android:textColor="@android:color/white" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</android.support.v7.widget.CardView>
我知道这不是使用listview的好方法,但是我必须使用这种方式。
只需从您的xml代码中删除ScrollView,因为ListView具有自己的Scroll不需要ScrollView。然后该代码将按需要工作。在显示第一个ListView的每个项目之后,将显示第二个List。
根据android docmentation
永远不要将ScrollView与ListView一起使用,因为ListView负责其自身的垂直滚动。最重要的是,这样做会挫败ListView中处理大型列表的所有重要优化,因为它有效地迫使ListView显示其整个项目列表以填充ScrollView提供的无限容器。
[First您将用户卡视图用作顶级父级,似乎您会像我猜的那样将其用作列表视图的子级,如果我的猜测正确,那么将两个列表视图用作子级是不明智的。
Second无论如何,您都想在同一视图中使用两个listview,建议使用视图将它们分开(TextView,...等)。
解决方案
1-删除滚动条,因为它没有用。
2-为您的列表视图增加权重,因为在您的情况下,包装内容表示整个视图。
3-建议添加视图以在列表之间进行分隔。
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/card"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:clickable="false"
app:cardBackgroundColor="@android:color/white"
app:cardElevation="2dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="false">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/wholeview"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="2">
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<!-- recommended to add view here -->
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<Button
android:id="@+id/findSelected"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center"
android:text="Next"
android:textColor="@android:color/white"
/>
</LinearLayout>
</RelativeLayout>