Android – NestedScrollView, который содержит ExpandableListView, не прокручивается при расширении

У меня есть ExpandableListView внутри NestedScrollView (да, я знаю, неплохо иметь прокрутку в другом прокручиваемом представлении, но я не знаю, что еще делать, пожалуйста, скажите мне, знает ли кто-нибудь лучший подход).

Размер содержимого в NestedScrollView по-прежнему находится на экране, поэтому он не будет прокручиваться, но когда ExpandableListView будет расширен, содержимое будет протекать вне экрана, но NestedScrollView прежнему не будет прокручиваться. Почему это так?

Вот мой макет NestedScrollView :

 <NestedScrollView> <LinearLayout> <LinearLayout></LinearLayout> ... // About 3 of the LinearLayouts <ExpandableListView/> </LinearLayout> </NestedScrollView> 

Solutions Collecting From Web of "Android – NestedScrollView, который содержит ExpandableListView, не прокручивается при расширении"

Вы можете использовать NonScrollExpandableListView вы можете достичь свойства без прокрутки любого Lisview или GridView или ExpandableListView , переопределив следующий метод.

 @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(); } 

Поэтому для использования NonScrollExpandableListView вам нужно создать один пользовательский класс.

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

И используйте его как.

 <com.example.extraclasses.NonScrollExpandableListView android:layout_width="match_parent" android:layout_height="wrap_content" /> 

Счастливое кодирование.

Мы не можем использовать listview, gridview или расширяемое listview внутри scrollview. Если вы не будете использовать расширяемое listview внутри scrollview, вы должны указать некоторую фиксированную высоту в расширяемое listview.

Добавьте android:nestedScrollingEnabled="true" в макет ExpandalbleListView.