在一个LinearLayout中滚动两个列表视图

问题描述 投票:0回答:2

我正在尝试在一个线性布局中滚动列表视图,但是它无法按我的要求工作。我附上一张图片,以进行更多说明。这是我的布局

 <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>

图像说明enter image description here

我知道这不是使用listview的好方法,但是我必须使用这种方式。

android android-layout android-listview android-xml android-scrollview
2个回答
0
投票

只需从您的xml代码中删除ScrollView,因为ListView具有自己的Scroll不需要ScrollView。然后该代码将按需要工作。在显示第一个ListView的每个项目之后,将显示第二个List。


0
投票

根据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>

© www.soinside.com 2019 - 2024. All rights reserved.