Резкая прокрутка с помощью NestedScrollView в фрагменте ViewPager внутри координатораLayout Android

Я столкнулся с большой проблемой прокрутки с ViewPager внутри CoordinatorLayout .

Текущая сцена:

  1. app:appbarScrollingViewBehaviour установлен на ViewPager .
  2. Фрагмент ViewPager имеет NestedScrollView качестве родительского корня.
  3. Макет фрагмента содержит Horizontal RecyclerView .
  4. Когда я прокручиваю вверх, касаясь RecyclerView , панель приложения не прокручивается, вместо этого происходит только вложенная прокрутка.
  5. Когда я прокручиваю, касаясь остальной части обзора, прокручивается CoordinatorLayout . 6) Также вложенная прокрутка останавливается на полпути и отсекает содержимое.

Я уже пробовал:

  1. ViewPager внутри NestedScrollView и установите для app:appbarScrollingViewBehaviour атрибут: NestedScrollView . Это полностью отключает содержимое фрагмента, поскольку RecyclerView не может определить его высоту.
  2. Установка setAutoMeasureEnabled(true) в RecyclerView , все еще не в состоянии установить высоту.
  3. И многие другие подходы.

    Пожалуйста, помогите с этим вопросом. Текущее поведение можно увидеть в загруженном формате .gif . Я также отправляю свой код для макета действий и макета фрагмента и макета строки RecyclerView .

спасибо

activity.xml:

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:Customs="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/new_color_primary_skim"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/transparent"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsingLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:elevation="0dp" app:layout_scrollFlags="scroll|exitUntilCollapsed" android:minHeight="?attr/actionBarSize"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:fitsSystemWindows="true" app:layout_scrollFlags="scroll|enterAlways" android:layout_height="?attr/actionBarSize"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical" android:src="@drawable/ic_arrow_back" /> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:gravity="center_vertical" android:text="Workout" android:textColor="#FFFFFF" android:textSize="19sp" android:textStyle="bold" Customs:font="LatoRegular.ttf" /> </FrameLayout> </android.support.v7.widget.Toolbar> <com.github.mikephil.charting.charts.LineChart android:id="@+id/workout_insights_graph" android:layout_width="match_parent" android:layout_height="150dp" android:layout_below="@+id/toolbar" app:layout_scrollFlags="scroll|snap" android:layout_marginTop="?attr/actionBarSize" app:layout_collapseMode="parallax" android:animateLayoutChanges="true" /> <com.fitsquare.app.fitsquare.Entity.Customs.SlidingTabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_below="@+id/diet_insights_graph" android:layout_height="50dp" android:layout_gravity="bottom" android:background="@color/transparent" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|top" android:layout_marginRight="-50dp" android:layout_marginTop="-50dp" android:src="@drawable/workout_translucent" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:layout_height="wrap_content"> </android.support.v4.view.ViewPager> </android.support.design.widget.CoordinatorLayout> 

pager_fragment.xml:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:Customs="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingLeft="7dp" android:paddingRight="7dp" android:paddingTop="10dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="vertical"> <LinearLayout android:layout_width="100dp" android:layout_height="4dp" android:layout_marginTop="10dp" android:alpha="0.5" android:background="@drawable/round_gray_dark" android:orientation="horizontal"></LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:gravity="center_vertical" android:orientation="horizontal"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingLeft="10dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal"> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Target Calories to burn : " android:textColor="@color/white" android:textSize="14sp" Customs:font="LatoRegular.ttf" /> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2300" android:textColor="@color/white" android:textSize="14sp" android:textStyle="bold" Customs:font="LatoRegular.ttf" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal"> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Burned calories : " android:textColor="@color/white" android:textSize="14sp" Customs:font="LatoRegular.ttf" /> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2300" android:textColor="@color/white" android:textSize="14sp" android:textStyle="bold" Customs:font="LatoRegular.ttf" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal"> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Total workout time : " android:textColor="@color/white" android:textSize="14sp" Customs:font="LatoRegular.ttf" /> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="20 mins" android:textColor="@color/white" android:textSize="14sp" android:textStyle="bold" Customs:font="LatoRegular.ttf" /> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="100dp" android:layout_height="4dp" android:layout_marginTop="10dp" android:alpha="0.5" android:background="@drawable/round_gray_dark" android:orientation="horizontal"></LinearLayout> </LinearLayout> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:id="@+id/textView27" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Today" android:textColor="@color/white" android:textSize="21sp" Customs:font="LatoRegular.ttf" /> <LinearLayout android:layout_width="100dp" android:layout_height="4dp" android:layout_marginTop="5dp" android:alpha="0.5" android:background="@drawable/round_gray_dark" android:orientation="horizontal"></LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content"> </android.support.v7.widget.RecyclerView> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:id="@+id/textView31" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tomorrow" android:textColor="@color/white" android:textSize="21sp" Customs:font="LatoRegular.ttf" /> <LinearLayout android:layout_width="100dp" android:layout_height="4dp" android:layout_marginTop="5dp" android:alpha="0.5" android:background="@drawable/round_gray_dark" android:orientation="horizontal"></LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingLeft="10dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal"> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Target Calories to burn : " android:textColor="@color/white" android:textSize="14sp" Customs:font="LatoRegular.ttf" /> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2300" android:textColor="@color/white" android:textSize="14sp" android:textStyle="bold" Customs:font="LatoRegular.ttf" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal"> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Total workout time : " android:textColor="@color/white" android:textSize="14sp" Customs:font="LatoRegular.ttf" /> <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="20 mins" android:textColor="@color/white" android:textSize="14sp" android:textStyle="bold" Customs:font="LatoRegular.ttf" /> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> <!-- <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:src="@color/transparent" />--> </FrameLayout> </android.support.v4.widget.NestedScrollView> 

Я нашел решение и сам решил проблему. Поскольку горизонтальный RecyclerView был дочерним элементом Nested Scroll View, он не переносил события прокрутки в CoordinatorLayout. Я просто решил это, отключив вложенную прокрутку, используя эту строку кода.

recyclerView.setNestedScrollingEnabled(false);

Intereting Posts
Устройства Android с датчиком давления Как изменить размер заставки ImageView с помощью picasso Папка SRC в Eclipse пуста (класс MainActivity не создан) после создания нового проекта Android с использованием Eclipse Лучший способ использования ускорителя эмуляции Android x86 HAXM в Windows 8 с Hyperv Как я могу разработать для Android в Emacs? Не можете найти символ NOTIFICATION_SERVICE? Не заканчивая активность при передаче изображения байтового массива, снятого камерой Как установить родительскую активность во время выполнения? Android-подменю ActionBar ActionProvider Создание уникального Android-идентификатора на глобальном уровне Почему Android WebView не загружает видео youtube HTML5 iframe? Проблема со вкусом Android Studio 3.0 Интегрированный комплект Crashlytics не удался с Android-проектом Android: Окрашивание части строки с помощью TextView.setText ()? React Native Android – Не удалось найти или загрузить основной класс org.gradle.wrapper.GradleWrapperMain