ViewPager2 的 OnTouchListener

Jor*_*ter 3 android ontouchlistener android-viewpager android-viewpager2

我最近将应用程序中的 ViewPager 更改为 ViewPager2。我已经为 viewPager 对象设置了一个 onTouchListener 来检测手势(onFling 和 onLongPress),如下所示:

mViewPager.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        mDetector.onTouchEvent(motionEvent); // use the custom gesture detector to detect onFling and onLongPress touch events.
        return true; 
    }
});
Run Code Online (Sandbox Code Playgroud)

在重构到 ViewPager2 之前,viewPager 的 onTouchListener 工作正常。我试过这个答案,但没有用。任何人都知道为什么会出现这种情况以及我该如何解决?

gee*_*919 8

因为 ViewPager2 是一个 ViewGroup,所以最终的目标是其中的 recyclerview。没有调用setOnTouchListener是因为recyclerview拦截了事件,先调用了onTouchEvent。

添加自定义 onTouch 逻辑的正确方法是调用

mViewPager.getChildAt(0).setOnTouchListener{...}
Run Code Online (Sandbox Code Playgroud)