android - 如何使 ViewPager2 对滑动不那么敏感?

标签 android android-viewpager2

我的 ViewPager2包含带有 RecyclerView 的 fragment 。当我在具有一些项目(不覆盖整个屏幕)的适配器内向下和向上滚动时,它经常“滑动”到 View 寻呼机中的下一个或上一个 fragment 。有什么方法可以降低这个新版本 ViewPager2 的敏感度吗?

<androidx.viewpager2.widget.ViewPager2 xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

最佳答案

以下代码适用于 ViewPager2:

    try {
        final Field recyclerViewField = ViewPager2.class.getDeclaredField("mRecyclerView");
        recyclerViewField.setAccessible(true);

        final RecyclerView recyclerView = (RecyclerView) recyclerViewField.get(viewPager);

        final Field touchSlopField = RecyclerView.class.getDeclaredField("mTouchSlop");
        touchSlopField.setAccessible(true);

        final int touchSlop = (int) touchSlopField.get(recyclerView);
        touchSlopField.set(recyclerView, touchSlop * 6);//6 is empirical value
    } catch (Exception ignore) {
    }

关于android - 如何使 ViewPager2 对滑动不那么敏感?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61772241/

相关文章:

android - ViewPager2 的 OnTouchListener

android - 以编程方式滑动时更改 ViewPager2 滚动速度

android - AsyncTaskLoader 和 Loader 有什么区别?

java - 如何每 2 秒(一遍又一遍)从 URL 加载文件?

android - 如何使用 View 寻呼机 2 转到使用分页 3 加载数据的位置?

java - Android ViewPager2中如何动态添加和删除页面?

android - 具有不同项目高度和 WRAP_CONTENT 的 ViewPager2

android - 以编程方式设置布局参数 recyclerview 的项目

android - Androgurus 的 2 个基本问题......有人可以指导我吗

java - 安卓通知延迟