У меня есть одно вертикальное вложенное scrollview, которое содержит кучу recyclerview с горизонтальной настройкой layoutmanager. Идея довольно похожа на то, как выглядит новый игровой магазин google. Я могу сделать его функциональным, но он не является гладким. Вот проблемы:
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-интерфейс с серией горизонтальных списков прокрутки внутри вертикальный список. Разве нет гладкого пути для этого?
Пример изображения из магазина: