Прокрутка не работает в NestedScrollView при попытке прокрутки из представлений с событиями щелчка

Я использую NestedScrollView в макете и пытаюсь использовать новый CoordinatorLayout из библиотеки поддержки дизайна для CollapsingToolbarLayout.

Мой файл макета выглядит так:

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="200dp" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <!-- app:expandedTitleMarginEnd="64dp"--> <ImageView android:layout_width="match_parent" android:layout_height="200dp" android:scaleType="centerCrop" android:src="@drawable/image_load_default_big" /> <android.support.v7.widget.Toolbar android:id="@+id/anim_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/nestedScrollVw" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|enterAlways" android:fitsSystemWindows="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="false" android:fitsSystemWindows="true"> <LinearLayout android:id="@+id/changePasswordButtonContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <Button android:id="@+id/changePasswordExpand" android:layout_width="match_parent" android:layout_height="55dp" android:background="@drawable/back_img" android:text="Change Your Password" android:textColor="@color/white" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:id="@+id/changePasswordContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/changePasswordButtonContainer" android:layout_centerInParent="true" android:orientation="vertical" android:padding="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Edit Your Password" android:textColor="@color/orange" /> <EditText android:id="@+id/etUserName" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/edittext_default_bg" android:drawableLeft="@drawable/password_icon" android:drawableRight="@drawable/tick" android:hint=" Old Password" android:padding="12dp" android:password="true" android:textColorHint="#b5b5b5" /> <EditText android:id="@+id/etPass" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/edittext_default_bg" android:drawableLeft="@drawable/password_icon" android:drawableRight="@drawable/cross" android:hint=" New Password" android:padding="12dp" android:password="true" android:textColorHint="#b5b5b5" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="20dp" android:paddingTop="20dp" android:text="show password" /> <Button android:id="@+id/btnSingIn" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:background="@drawable/login_button_background" android:paddingBottom="8dp" android:paddingTop="8dp" android:text="Done" android:textColor="@color/white" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:id="@+id/dealerToDealerContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/changePasswordContainer" android:orientation="vertical"> <Button android:id="@+id/dealerToDealerExpand" android:layout_width="match_parent" android:layout_height="55dp" android:background="@drawable/back_img" android:text="Dealer To Dealer Platform No" android:textColor="@color/white" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/dealerToDealerContainer" android:layout_centerInParent="true" android:orientation="vertical" android:padding="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Edit Number" android:textColor="@color/orange" /> <EditText android:id="@+id/dealerToDealerNo" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/edittext_default_bg" android:drawableLeft="@drawable/password_icon" android:drawableRight="@drawable/tick" android:hint=" 56546789" android:padding="12dp" android:password="true" android:textColorHint="#b5b5b5" /> <Button android:id="@+id/dealerToDealerNoDone" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:background="@drawable/login_button_background" android:paddingBottom="8dp" android:paddingTop="8dp" android:text="Done" android:textColor="@color/white" android:textStyle="bold" /> </LinearLayout> </RelativeLayout> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout> 

Когда я пытаюсь прокручивать, иногда это не работает. Причина этого заключается в том, что другие элементы макета с событиями клика поглощают событие касания. В основном EditText, RadioButton, Button потребляют события касания. Любые предложения по решению этой проблемы?

Solutions Collecting From Web of "Прокрутка не работает в NestedScrollView при попытке прокрутки из представлений с событиями щелчка"

У меня такая же проблема. Это происходит только тогда, когда высота содержимого NestedScrollView меньше высоты экрана устройства. Поэтому обходным setMinimumHeight(..) является использование setMinimumHeight(..) для представления внутри вашего NestedScrollView чтобы изменить размер экрана на высоту экрана:

 DisplayMetrics displaymetrics = new DisplayMetrics(); getBaseActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int screenHeight = displaymetrics.heightPixels; int actionBarHeight = 0; TypedValue tv = new TypedValue(); if (getBaseActivity().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics()); } view.setMinimumHeight(screenHeight - actionBarHeight); 

Где view – это RelativeLayout

Он отлично работает для меня. Надеюсь, это поможет вам

Один из ваших ScrollViews отправит все события в первый вид, который отвечает true в dispatchMotionEvent.

Вы можете избежать использования такого сценария в своем приложении или переопределить все методы dispatchMotionEvent (из свитков и просмотров), чтобы не использовать ACTION_DOWN.

В вашем AndroidManifest.xml убедитесь, что атрибут «windowSoftInputMode» установлен в «adjustResize».

 <activity android:name=".activities.YourActivity" android:windowSoftInputMode="adjustResize">