Непоследовательная вертикальная прокрутка для BottomSheetBehavior ViewGroup, содержащей вложенные RecyclerViews - PullRequest
0 голосов
/ 04 сентября 2018

Аннотация

Попробуйте что-то похожее на поведение макета Google Maps

Деталь

Я пытаюсь реализовать BottomSheetBehavior, который имеет ViewGroup (любой) -> ViewPager (фрагменты) -> RecyclerView (по вертикали) -> Несколько прокручиваемых по горизонтали RecyclerView / или любой прокручиваемый вид.

Горизонтально прокручиваемые дочерние элементы RecyclerView являются частью ItemHolders родительского элемента RecyclerView (с вертикальной прокруткой)

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".bottom.BottomSheetActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_bottom_sheet" />

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/frame_bottom"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:behavior_hideable="false"
        app:behavior_peekHeight="240dp"
        android:background="@android:color/white"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.v7.widget.RecyclerView
                android:id="@+id/recyclerView_bottom"
                android:layout_width="match_parent"
                android:nestedScrollingEnabled="true"
                android:layout_height="match_parent"/>

        </FrameLayout>

    </android.support.v4.widget.NestedScrollView>

</android.support.design.widget.CoordinatorLayout>

Задача

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

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

Эта проблема возникает только при использовании BottomSheetBehavior, без BottomSheetBehavior, она прекрасно работает.

Я пытался использовать FrameLayout вместо NestedScrollView, а также пытался напрямую поместить ReyclerView в качестве группы просмотра BottomSheetBehavior. Это не сработало.

Итак, как передать события касания вертикальной прокрутки из горизонтально прокручиваемого reyclerView, являющегося частью viewHolder, в родительский RecyclerView при использовании BottomSheetBehavior?

...