ListView inside a ScrollView issue in Android

孤人 提交于 2019-12-08 09:25:36

问题


Here is my XML layout. I have a list view inside my scrollview. I am setting the height manually if I change the listview height to wrap_content it is not working. And also if the data grows beyond the limit it is hiding. I am seeing many answers to solve this. What is the best option to solve it for my case?

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

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:focusableInTouchMode="true" >

    <LinearLayout
        android:id="@+id/store_scroller"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:background="#c6c6c6"
            android:padding="10dp" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                layout_alignParentLeft="true"
                android:text="Stores"
                android:textSize="20dp" />

            <TextView
                android:id="@+id/merchant_count_textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:text="0 Results" />
        </RelativeLayout>
        <Gallery
            android:id="@+id/gallery1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:drawSelectorOnTop="true"
            android:gravity="left"
            android:listSelector="@color/gridviewlistselector"
            android:paddingLeft="10dp"
            android:paddingRight="20dp"
            android:paddingTop="10dp"
            android:spacing="10dp" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="55dp"
            android:background="#c6c6c6"
            android:padding="10dp" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                layout_alignParentLeft="true"
                android:text="Products"
                android:textSize="20dp" />

            <Spinner
                android:id="@+id/filter_spinner"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="40dp"
                android:layout_toRightOf="@+id/textView1" />

            <TextView
                android:id="@+id/product_count_textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:text="0 Results" />
        </RelativeLayout>

        <ListView
            android:id="@+id/list"
            android:layout_width="fill_parent"
            android:layout_height="4800dp"
            android:layout_weight="1"
            android:drawSelectorOnTop="true"
            android:listSelector="@color/gridviewlistselector"
            android:orientation="vertical" />
    </LinearLayout>
</LinearLayout>

</ScrollView>

回答1:


Short answer: You can't (shouldn't) have a ListView wrapped in a ScrollView.

Long answer: As Romain Guy (UI-guru at Google themselves) once said:

Using a ListView to make it not scroll is extremely expensive and goes against the whole purpose of ListView. You should NOT do this. Just use a LinearLayout instead.

Quote via "How can I put a ListView into a ScrollView without it collapsing?".




回答2:


Instead using List View in ScrollView you can make separate layout where you can define your desired components. then you can make that layout haeder of the ListView. You can use following code:

LayoutInflater inflater = LayoutInflater.from(this);
View LTop = inflater.inflate(R.layout.header_tolistview, null);
listview.addHeaderView(LTop); 


来源:https://stackoverflow.com/questions/13883591/listview-inside-a-scrollview-issue-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!