问题描述
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则不会有该问题。