简体   繁体   中英

Android - Listview not Scrolling under a ScrollView

This my xml file that shows listview under linerlayout and scrollview. How can I make my listview scroll? Because what I wanted is the background image under the linearlayout is scrolling too. But whenever I wanted to scroll the listview it rather scroll the whole layout.

<ScrollView 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"
    tools:context=".MainScreenEntered" 
   >

     <LinearLayout
        android:layout_width="320dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="@drawable/mainscreen"
         >  

     <EditText
        android:id="@+id/txtSearch"
        android:layout_width="220dp"
        android:layout_height="40dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="130dp"
        android:background="@drawable/white"
        android:height="10dp"
        android:singleLine="true"
        android:textSize="15sp"
        android:hint="@string/search"
      />    

     <Button
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_marginLeft="250dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="-41dp"
        android:background="@drawable/btnsearch"
      />

    <ListView
        android:id="@+id/lvEntries"
        android:layout_width="255dp"
        android:layout_height="300dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="41dp"
        />

    <Button
        android:layout_width="280dp"
        android:layout_height="55dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="21dp"
        android:background="@drawable/btnaddentry"
        android:onClick="goToAddEntryScreen"
      />

     </LinearLayout>
</ScrollView>

You should not put ListView under a ScrollView. ListView scrolls by itself. Instead you can add views as a header or footer to listview.

Quoting docs

You should never use a ScrollView with a ListView, because ListView takes care of its own vertical scrolling. Most importantly, doing this defeats all of the important optimizations in ListView for dealing with large lists, since it effectively forces the ListView to display its entire list of items to fill up the infinite container supplied by ScrollView.

You can also use a RelativeLayout . Only ListView Scrolls the EditText and Buttons do not scroll. Modify the below Accordingly

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

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignRight="@+id/button1"
        android:layout_marginTop="81dp"
        android:text="Button" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <ListView
        android:id="@+id/listView1"
        android:layout_above="@id/button1"
        android:layout_below="@id/button2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"

    >
    </ListView>

</RelativeLayout>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM