ViewPager2:setOnTouchListener() 不调用

Posted

技术标签:

【中文标题】ViewPager2:setOnTouchListener() 不调用【英文标题】:ViewPager2: setOnTouchListener() doesn't call 【发布时间】:2019-12-23 23:53:28 【问题描述】:

我正在将我的 ViewPager 迁移到新的 ViewPager2。不幸的是,对于这个新类,setOnTouchListener 永远不会被调用。

mViewPager.setOnTouchListener(new View.OnTouchListener() 
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) 
                LogUtils.LOGD("XXXX", "motionEvent.getAction()=" + motionEvent.getAction());
                ...
                return false;
            
        );

你知道我该如何解决吗?

非常感谢你们!

【问题讨论】:

我也有这个问题,它不知道为什么,我想扩展 viewpager2 以覆盖触摸方法,但我不能,因为 viewpager2 是最终的! 【参考方案1】:

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

添加自定义 onTouch 逻辑的正确方法是调用 mViewPager.getChildAt(0).setOnTouchListener...

【讨论】:

以上是关于ViewPager2:setOnTouchListener() 不调用的主要内容,如果未能解决你的问题,请参考以下文章

ViewPager2+Fragment操作笔记

ViewPager2+Fragment操作笔记

ViewPager2+Fragment操作笔记

ViewPager2嵌套RecyclerView滑动冲突解决办法

无法使用数据绑定绑定 viewpager2 数据

ViewPager2学习总结