【问题标题】:How to make ViewPager2 less sensitive to swipe?如何使 ViewPager2 对滑动不那么敏感?
【发布时间】:2020-05-13 10:28:32
【问题描述】:

我的ViewPager2 包含带有 RecyclerView 的片段。当我在具有一些项目(不覆盖整个屏幕)的适配器内向下和向上滚动时,它经常“滑动”到视图寻呼机中的下一个或上一个片段。有什么方法可以降低这个新版本 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" />

【问题讨论】:

    标签: android android-viewpager2


    【解决方案1】:

    以下代码适用于 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) {
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 2020-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      相关资源
      最近更新 更多