Intereting Posts
Какая часть Java 6 API реализована Android? Активность, созданная дважды на android Реализация текстового редактора в Android? Как определить обратные вызовы в Android? Синхронизация с календарем Android-телефона в Календаре Google в Интернете без использования API данных календаря Google. Это возможно? Как буферизировать полилинию в Android или нарисовать полигон вокруг полилинии? Скрыть активность без финиша () Как получить доступ к buildConfigField в другом месте внутри файла сборки градиента Как предотвратить клонирование тегов NFC? Adb Devices не могут найти мой телефон Инфляция пользовательского макета с фрагментами в Robolectric не работает System.TypeLoadException: не удалось разрешить тип с токеном 01000019 Шифровать базу данных SQLite без увеличения размера приложения? Проект Android появляется с дублирующимся приложением после развертывания Сохранение файла во внутреннем хранилище android

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