ViewPager2 嵌套CoordinatorLayout 水平方向滑动冲突怎么解决?

新手上路,请多包涵

问题描述

ViewPager2 + CoordinatorLayout + AppBarLayout + RecyclerView, 快速滑动时ViewPager2 会夺取CoordinatorLayout的触摸事件。

相关代码

view_pager.xml:

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

Fragment1.xml:

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:id="@+id/coordinatorLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:fadingEdge="none"
        app:elevation="0dp">

        <!-- 跟随滑动的控件 -->
        <View
            android:id="@+id/header"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            app:layout_scrollFlags="scroll" />

        <!-- 吸顶控件 -->
        <View
            android:id="@+id/floating"
            android:layout_width="match_parent"
            android:layout_height="100dp" />
    </com.google.android.material.appbar.AppBarLayout>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:overScrollMode="never"
        android:scrollbars="none"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

部分代码如上,当手指触摸在header或floating上快速上下滑动时很容易就被外层的ViewPager2夺取事件导致变成了左右滑动;而当手指在RecyclerView上进行滑动时则不会被夺取事件。
请问如何解决该事件冲突,测试过将ViewPager2换成ViewPager则不会有该问题。

阅读 2.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题