包含嵌套的RecyclerViews的BottomSheetBehavior ViewGroup的垂直滚动不一致

时间:2018-09-04 19:47:06

标签: android android-layout android-recyclerview bottom-sheet recyclerview-layout

摘要

尝试类似Google Maps布局行为

详细信息

我正在尝试实现具有以下功能的BottomSheetBehavior: ViewGroup(任意)-> ViewPager(片段)-> RecyclerView(垂直)->多个水平可滚动RecyclerView /或任何可滚动视图。

可水平滚动的子RecyclerViews是父RecyclerView的ItemHolders的一部分(可垂直滚动)

<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视图组。没用。

那么,当我使用BottomSheetBehavior时,如何将垂直滚动触摸事件从作为viewHolder一部分的可水平滚动的reyclerView传递给父RecyclerView?

0 个答案:

没有答案