Non-scrollable ListView inside ScrollView Non-scrollable ListView inside ScrollView android android

Non-scrollable ListView inside ScrollView


You Create Custom ListView Which is non Scrollable

public class NonScrollListView extends ListView {    public NonScrollListView(Context context) {        super(context);    }    public NonScrollListView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    @Override    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {            int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(                    Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);            super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);            ViewGroup.LayoutParams params = getLayoutParams();            params.height = getMeasuredHeight();        }}

In Your Layout Resources File

<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:fadingEdgeLength="0dp"    android:fillViewport="true"    android:overScrollMode="never"    android:scrollbars="none" >    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="wrap_content" >        <!-- com.Example Changed with your Package name -->        <com.Example.NonScrollListView            android:id="@+id/lv_nonscroll_list"            android:layout_width="match_parent"            android:layout_height="wrap_content" >        </com.Example.NonScrollListView>        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_below="@+id/lv_nonscroll_list" >            <!-- Your another layout in scroll view -->        </RelativeLayout>    </RelativeLayout></ScrollView>

In Java File

Create a object of your customListview instead of ListViewlike :
NonScrollListView non_scroll_list = (NonScrollListView) findViewById(R.id.lv_nonscroll_list);


There is no need to use a listview at all.

If you really think about it, a listview can be replaced with a LinearLayout in your case. The Adapter would be the same, however instead of attaching the adapter with your listview, simply call the getView function of the adapter in a for loop on your data and add the retrieved views to your vertical linearlayout.

However this approach is only recommended if you have a small number of items in your list and your display representation of those items is not memory intensive.


The best way to do this (in 2017) is to use a RecyclerView with a NestedScrollView.

No hacks required and it works out of the box like you want it to.