RecyclerView внутри NestedScrollview не прокручивается плавно - PullRequest
0 голосов
/ 27 декабря 2018

Когда я прокручиваю вниз, элементы над RecyclerView не прокручиваются, пока я не начинаю касаться из макета выше, и прокручиваются вниз только тогда, когда я достиг конца RecyclerView.

<NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout>
        <Some other items.../>
    </LinearLayout>

    <RecyclerView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"/>
</NestedScrollView>

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

float height_recyclerview = (ScreenUtil.getHeight(context) - (height_banner + height_bottom_navigation + height_create_post));
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) height_recyclerview);
rv.setLayoutParams(layoutParams);

Почему я использую фиксированный размер, еслион работает гладко с wrap_content?

  • Я буду отображать, возможно, тысячи предметов, которые могут иметь изображения, что ухудшит производительность, если не будет фактически перерабатываться из-за проблемы, * RecyclerViewнаходится внутри NestedScrollView
  • Я реализовал EndlessRecyclerViewScrollListener, который имеет проблему, заключающуюся в том, что он постоянно загружает больше данных с сервера, если реализован с RecyclerView, который находится внутри любого прокручиваемого представления, или если он находится в прокручиваемом представлении, но не имеет фиксированной высоты, даже если вы не прокручиваете вниз.

Я пробовал следующее:

  • установить для вложенной прокрутки значение false в представлении рециркулятора
  • попробовать использовать представление прокрутки вместо представления с вложенной прокруткой
  • кучу другого кода, связанного с макетами и режимами прокрутки, которыедругие предположили, что это не работает для меня, потому что я реализую его в гораздо более сложной компоновке и тот факт, что я использую EndlessRecyclerViewScrollListener

Что я хочу исправить?

Я хочу, чтобы страница прокручивалась как одна страница, а не как отдельное прокручиваемое представление.

Обратите внимание, что мое представление рециркулятора имеет фиксированную высоту, которая занимает все пространство экрана, то есть его высотана самом деле, если предположить, что линейный макет выше не виден, если пользователь прокручивал вниз.

В идеальном случае сначала нужно прокрутить представление прокрутки вниз, чтобы представление рециркулятора занимало весь экран, чтобыrecyclerview будет прокручивать, однако пользователь хочет.

Тогда линейное расположение выше которого не должноОн становится видимым, если представление рециркулятора занимает все пространство экрана, должно отображаться только в том случае, если представление рециркулятора достигло верхнего / первого элемента, если пользователь продолжает прокручивать назад.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Плавная прокрутка NestedScrollView

recyclerView.isNestedScrollingEnabled = true

Сделайте это программно

 <androidx.core.widget.NestedScrollView 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="0dp"
        android:fillViewport="true"
        ...
0 голосов
/ 27 декабря 2018

Прочтите это.

Добавьте app:layout_behavior="@string/appbar_scrolling_view_behavior" к вашему переработчику xml.

<android.support.v7.widget.RecyclerView
    android:id="@+id/conversation"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
...