15

我正在将我的 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;
            }
        });

你知道我该如何解决吗?

非常感谢你们!

4

1 回答 1

15

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

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

于 2020-01-08T13:18:30.790 回答