ViewPager2 的 OnTouchListener

问题描述 投票:0回答:2

我最近将应用程序中的 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; 
    }
});

在重构 ViewPager2 之前,viewPager 的 onTouchListener 工作正常。我尝试了这个答案,但它不起作用,并且无法在网上找到更多信息。

我们如何将

OnTouchListener
设置为
ViewPager2

android android-viewpager ontouchlistener android-viewpager2
2个回答
16
投票

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

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

mViewPager.getChildAt(0).setOnTouchListener{...}

-1
投票

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

viewPager2.getChildAt(viewPager2.getCurrentItem()).setOnTouchListener(...)
© www.soinside.com 2019 - 2024. All rights reserved.