ViewPager2:setOnTouchListener()不调用

17

我正在将我的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是final类型的! - Ahmed Elshaer
1个回答

21
因为ViewPager2是一个ViewGroup,最终目标是其中的recyclerview。未调用setOnTouchListener是因为recyclerview会拦截事件并首先调用onTouchEvent

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接