ExpandableListView inside a NestedScrollView won’t scroll? Use a Non-scrolling ExpandableListView

Zeba Rahman
fabcoding
Published in
1 min readMar 14, 2019

Using an ExpandableListView inside a NestedScrollView makes it unscrollable, because of the NestedScrollView scrolling interference. To solve this, you can create a non-scrolling ExpandableListView with size equal to its content.

Create this class

import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.ExpandableListView;

public class NoScrollExListView extends ExpandableListView {

public NoScrollExListView(Context context) {
super(context);
}
public NoScrollExListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NoScrollExListView(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();
}
}

And instead of ExpandableListView, use NoScrollExListView.

<com.your.app.package.NoScrollExListView
android:id="@+id/exListView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.admads.notesapp.NoScrollExListView>

— -

Originally published at Fabcoding.

--

--