Как использовать Recyclerview внутри Scrollview

Я пытаюсь показать горизонтальные элементы recyclerview и вертикальные элементы recyclerview внутри ScrollView

Scrollview не работает даже если я использую android: fillViewport = "true"

  <ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    //Horizontal Recyclerview items
    <RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </RecyclerView>
    //vertical Recyclerview items
        <RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"></RecyclerView>
    </LinearLayout>

</ScrollView>

Ответ 1

Вместо этого вы должны использовать NestedScrollView. Однако вам может понадобиться написать собственный LayoutManager. Ознакомьтесь с этим SO-ответом для более подробной информации

Ответ 2

  • Для использования recyclerview внутри прокрутки нужно использовать собственный менеджер макетов.

  • Вы можете удалить scrollview и создать элемент заголовка в вертикальном recyclerview, который содержит горизонтальный recyclerview.

Также вы не должны использовать recyclerview внутри scrollview. Поэтому подумайте, что второй подход будет лучше.

Также вы можете использовать Snap-RecyclerView-Utils. Он имеет линейный менеджер компоновки для recyclerview внутри вида прокрутки и адаптера, который может помочь вам создать заголовок, содержащий горизонтальный recyclerview.

Ответ 3

ScrollView может быть только один ребенок.
Удалите RelativeLayout и повторите попытку.

Кроме того, android:layout_height в ScrollView должен быть установлен в wrap_content

Кроме того, я не совсем уверен, если он работает, поскольку в Docs указано, что

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

Возможно, a NestedScrollView работает, так как он предназначен для

NestedScrollView похож на ScrollView, но он поддерживает действие как родителя и дочернего родителя с прокруткой на обеих новых и старых версиях Android. Вложенная прокрутка включена по умолчанию.