Программа recyclerView имеет плавную прокрутку сама по себе, но когда нам нужно поместить recyclerView в любой scrollView, она не будет работать, как показано ниже:
Layout XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
</LinearLayout>
Решение для этого заключается в том, что нам нужно использовать nestedScrollView вместо scrollview, как показано ниже
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
Проблема возникает, когда мы используем nestedScrollView и помещаем recyclerView внутри nestedScrollView:он прокручивается с различной скоростью в зависимости от жеста.Функция прокрутки не будет гладкой.
Поэтому, чтобы решить эту проблему, все, что вам нужно сделать после настройки адаптера, это добавить эту строку ViewCompat.setNestedScrollingEnabled(recyclerView, false);
Это не очень хорошорешение.Помещение RecyclerView в NestedScrollView приводит к визуализации ВСЕХ элементов адаптера RecyclerView, которые используют много памяти.Это может быть очень медленным в большинстве устройств с меньшим объемом памяти.
Этот подход также может привести к отключению необходимости прокрутки, что приведет к отключению повторного использования представлений, поэтому все элементы будут инициализированы одновременно. Например, в списке из 1000 элементов.Это приведет к отставанию приложения.Этого можно избежать, если использовать нумерацию страниц, когда вы загружаете фиксированное количество элементов, когда пользователь прокручивает список вниз.
Подробнее о нумерации страниц.
Разбиение на страницы с RecyclerView - Этьен Лоулор - Средний
Разбиение на страницы под Android RecyclerView с библиотекой подкачки с использованием MVVM ...
Обзор библиотеки подкачки |Разработчики Android