Intereting Posts
После поворота экрана язык моего приложения будет изменен Surface View с камерой, не функционирующей в Android API 23 (android 6+) Проблемы с рендерингом Android Studio, классы не были найдены Как нарисовать растровое изображение на Android с помощью OpenGL Android: AppCompat 21, как изменить значок «Назад» и значок переполнения на пользовательский? Картвью Android с фрагментами нельзя добавить дважды? Как настроить значок стрелки, значок страницы и заголовок страницы в MasterDetailPage – Xamarin.Forms Переключение между фрагментами в одном действии Уровни журнала Android Применение кнопки buttonStyle в качестве темы не работает, но если применяется к кнопке напрямую Android – Как создать эффект встряски, как удалить в iphone? Не удается разрешить символ «GCMBroadcastReceiver» в Android Studio Ошибка Android Studio: «Переменная среды не указывает на действительную установку JVM» Предварительный просмотр камеры не перезапускается? Android пустой экран на onBack в loadDataWithBaseURL

Прокрутка не работает в 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">