ListView inside ScrollView is not scrolling on Android
android, android-layout, listview, scrollview
Solution
You shouldn't put a `ListView` inside a `ScrollView` because the `ListView` class implements its own scrolling and it just doesn't receive gestures because they all are handled by the parent `ScrollView`. I strongly recommend you to simplify your layout somehow. For example you can add views you want to be scrolled to the `ListView` as headers or footers.
UPDATE:
Starting from API Level 21 (Lollipop) nested scroll containers are officially supported by Android SDK. There're a bunch of methods in `View` and `ViewGroup` classes which provide this functionality. To make nested scrolling work on the Lollipop you have to enable it for a child scroll view by adding `android:nestedScrollingEnabled="true"` to its XML declaration or by explicitly calling `setNestedScrollingEnabled(true)`.
If you want to make nested scrolling work on pre-Lollipop devices, which you probably do, you have to use corresponding utility classes from the Support library. First you have to replace you `ScrollView` with NestedScrollView. The latter implements both NestedScrollingParent and NestedScrollingChild so it can be used as a parent or a child scroll container.
But `ListView` doesn't support nested scrolling, therefore you need to subclass it and implement `NestedScrollingChild`. Fortunately, the Support library provides NestedScrollingChildHelper class, so you just have to create an instance of this class and call its methods from the corresponding methods of your view class.
Problem
I am having trouble with a scrolling `ListView` inside a `ScrollView`. I have an Activity which has some EditTexts in the top part and then a tab host with two tabs which have one ListView each. When the EditText views are focused, the soft keyboard comes up and as I have a ScrollView, the content is scrollable. But the problem comes when there are more items in ListViews (ones in tabs), I am not able to scroll the ListView, even if there are more items. The following is the layout XML: ``` <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="?backgroundImage" android:orientation="vertical"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="50dip" android:layout_alignParentBottom="true" android:layout_margin="10dip" android:id="@+id/buttons"> <Button android:text="Save" android:layout_margin="2dip" android:textSize="20dip" android:id="@+id/btnSaveorUpdate" android:layout_height="wrap_content" android:layout_width="145dip"></Button> <Button android:text="Cancel" android:layout_margin="2dip" android:textSize="20dip" android:id="@+id/btnCancelorDelete" android:layout_height="wrap_content" android:layout_width="145dip"></Button> </LinearLayout> <ScrollView android:layout_above="@id/buttons" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true" android:layout_margin="10dip"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dip"> <TextView android:text="Bill details" android:textColor="?textColorDark" android:layout_alignParentTop="true" android:id="@+id/txtEnterDetails" android:textSize="25dip" android:textStyle="bold" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_marginBottom="2dip"></TextView> <LinearLayout android:focusable="true" android:focusableInTouchMode="true" android:layout_width="0dip" android:layout_height="0dip" /> <EditText android:layout_width="fill_parent" android:hint="Enter data" android:inputType="numberDecimal" android:id="@+id/txtSample" android:textSize="@dimen/editText" android:layout_height="@dimen/editTextHeight" android:text=""></EditText> <EditText android:layout_width="fill_parent" android:id="@+id/txtDescription" android:hint="Enter description" android:textSize="@dimen/editText" android:layout_height="@dimen/editTextHeight" android:inputType="text" android:text=""></EditText> <EditText android:layout_width="fill_parent" android:id="@+id/txtComment" android:hint="Enter comment (if any)" android:textSize="@dimen/editText" android:layout_height="@dimen/editTextHeight" android:inputType="text" android:text=""></EditText> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/txtDate" android:layout_width="wrap_content" android:text="" android:textSize="20dip" android:textColor="?textColorDark" android:layout_marginLeft="10dip" android:layout_height="@dimen/editTextHeight" android:layout_gravity="center_vertical" /> <Button android:id="@+id/btnPickDate" android:layout_width="wrap_content" android:layout_height="@dimen/editTextHeight" android:text="Select date" android:layout_margin="2dip" android:textSize="15dip" android:layout_gravity="center_vertical" /> </LinearLayout> <TabHost android:id="@+id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TabWidget android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@android:id/tabs"></TabWidget> <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@android:id/tabcontent"> <ScrollView android:layout_above="@id/buttons" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true" android:id="@+id/tab1"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TableLayout android:layout_height="wrap_content" android:layout_width="fill_parent"> <TableRow android:id="@+id/tableRow1" android:layout_marginLeft="2dip" android:layout_marginRight="5dip" android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:src="@drawable/ic_menu_invite" android:layout_width="40dip" android:layout_height="40dip" android:layout_gravity="center_vertical"></ImageView> <TextView android:text="Add friend" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_centerVertical="true" android:textColor="?textColorDark" android:textSize="@dimen/editText" android:layout_gravity="center_vertical" /> </LinearLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dip" android:layout_marginRight="5dip"> <TextView android:id="@+id/txtData1" android:layout_width="170dip" android:layout_height="wrap_content" android:text="Data" android:textSize="14dip" android:textStyle="bold" android:textColor="#000000"> </TextView> <TextView android:id="@+id/txtData2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sample" android:textSize="13dip" android:textColor="#000000"></TextView> </TableRow> </TableLayout> <ListView android:cacheColorHint="#00000000" android:id="@+id/ListView01" android:layout_height="wrap_content" android:layout_width="fill_parent" /> </LinearLayout> </ScrollView> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:id="@+id/tab2" android:orientation="vertical"> <TableLayout android:layout_height="wrap_content" android:layout_width="fill_parent"> <TableRow android:id="@+id/tableRow2" android:layout_marginLeft="2dip" android:layout_marginRight="5dip" android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:src="@drawable/ic_menu_invite" android:layout_width="40dip" android:layout_height="40dip" android:layout_gravity="center_vertical"></ImageView> <TextView android:text="Sample" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_centerVertical="true" android:textColor="?textColorDark" android:textSize="@dimen/editText" android:layout_gravity="center_vertical" /> </LinearLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dip" android:layout_marginRight="5dip"> <TextView android:id="@+id/txtUser1" android:layout_width="170dip" android:layout_height="wrap_content" android:text="User" android:textSize="14dip" android:textStyle="bold" android:textColor="#000000"> </TextView> <TextView android:id="@+id/txtUserData" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="UserData" android:textSize="13dip" android:textColor="#000000"></TextView> </TableRow> </TableLayout> <ListView android:cacheColorHint="#00000000" android:id="@+id/ListView02" android:layout_height="wrap_content" android:layout_width="fill_parent" /> </LinearLayout> </FrameLayout> </LinearLayout> </TabHost> </LinearLayout> </ScrollView> </RelativeLayout> ``` Please can anyone tell me what the problem is here? I have another post on the ListView inside ScrollView problem, but they were of no use in my case.