防止在内部视图的 onTouch 时滑动 ViewPager2

Vas*_*tov 7 android android-viewpager ontouch android-viewpager2

我有一个里面有一个片段的 ViewPager2,

在片段中,我有一个自定义视图,其中包含涉及移动手指的某些触摸逻辑。

当内部视图拦截触摸事件时,如何防止 ViewPager 滑动?

override fun onTouchEvent(event: MotionEvent?): Boolean {
    if (event?.action == MotionEvent.ACTION_DOWN || event?.action == MotionEvent.ACTION_MOVE) {
       //Do some stuff here
    }
    return true
}
Run Code Online (Sandbox Code Playgroud)

在滑动此视图时,视图寻呼机仍会滑动到其他页面。

Lor*_*las 6

为内部视图设置 OnTouchListener。在onTouch()方法中,调用:

viewPager.requestDisallowInterceptTouchEvent(true)
Run Code Online (Sandbox Code Playgroud)

ViewPager 在onInterceptTouchEvent(). 上面的代码阻止 ViewPager 调用onInterceptTouchEvent(). 当您滑动时, ViewPager 返回 true ,onInterceptTouchEvent()其中还可以防止将触摸事件传递给子视图。因此,禁止拦截允许子视图处理触摸事件。

false未触及内部视图时设置回。

根据我的经验,onInterceptTouchEvent()防止onTouchEvent(). 它不会阻止OnTouchListener. 所以这里的关键是设置OnTouchListener内部视图。