У меня есть одно вертикальное вложенное scrollview, которое содержит кучу recyclerview с горизонтальной установкой layoutmanager. Идея довольно похожа на то, как выглядит новый игровой магазин google. Я могу сделать его функциональным, но он не является гладким. Вот проблемы:NestedScrollView и горизонтальный RecyclerView Smooth Scrolling
1) Объект горизонтального возврата не может перехватить событие касания большую часть времени, даже если я коснусь его. Кажется, что представление прокрутки имеет приоритет для большинства движений. Мне трудно зацепиться за горизонтальное движение. Этот UX разочаровывает, поскольку мне нужно попробовать несколько раз, прежде чем он сработает. Если вы проверите магазин воспроизведения, он сможет очень хорошо перехватить событие касания, и он работает хорошо. Я заметил в игровом магазине то, как они его устанавливали, - это много горизонтальных переработок внутри одного вертикального рециклинга. Нет прокрутки.
2) Высота горизонтальных recyclerviews должна быть установлена вручную, и нет простого способа рассчитать высоту элементов для детей.
Вот макет, я использую:
<android.support.v4.widget.NestedScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:background="@color/dark_bgd"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/main_content_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="gone"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/starring_list"
android:paddingLeft="@dimen/spacing_major"
android:paddingRight="@dimen/spacing_major"
android:layout_width="match_parent"
android:layout_height="180dp" />
Эта модель пользовательского интерфейса является очень простой и, скорее всего, используется во многих приложениях. Я прочитал много SO, где ppl заявляет, что это плохая идея поместить список в список, но это очень распространенный и современный шаблон пользовательского интерфейса, используемый повсеместно. Принимая во внимание netflix-интерфейс с серией горизонтальных списков прокрутки внутри вертикальный список. Разве нет гладкого пути для этого?
Пример изображение из магазина:
Странно то, что у меня есть противоположная проблема: я хочу, чтобы NestedScrollView позволял прокручивать по вертикали, но горизонтальный RecyclerView принимает события касания, поэтому, когда я запускаю вертикальную прокрутку на нем, он не позволяет этого. Кроме того, кстати, если у вас есть всего несколько элементов для показа, вы можете использовать простой HorizontalScrollView с LinearLayout. –