android - 防止内 View onTouch时滑动ViewPager2

标签 android android-viewpager ontouch android-viewpager2

我有一个 ViewPager2 里面有一个 fragment ,

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

如何防止 ViewPager 在内部 View 拦截触摸事件时滑动?

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

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

最佳答案

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

viewPager.requestDisallowInterceptTouchEvent(true)

ViewPager 在 onInterceptTouchEvent() 中处理其滑动 Action .以上代码阻止 ViewPager 调用 onInterceptTouchEvent() .滑动时,ViewPager 在 onInterceptTouchEvent() 中返回 true这也可以防止将触摸事件传递给 subview 。因此不允许拦截允许 subview 处理触摸事件。

设置回 false当内部 View 未被触及时。

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

关于android - 防止内 View onTouch时滑动ViewPager2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60328756/

相关文章:

android - Google Play 服务 7.5.0 AnalyticsService NPE onStartCommand

android - 在 VerticalViewPager 中滚动/滑动时 VideoView 消失

android - 释放按钮时,为什么工作线程会陷入循环?

java - onTouch() 未触发

android - 如何在 Android 应用程序中将 DrawerLayout 包装在 PreferenceActivity 周围?

Android SoundPool.play() 有时会滞后

android - 在 ListView 中隐藏页脚

java - 如何从Viewpager返回值: OnPageSelected?

android - 如何在 Android 中使用 ViewPager 制作无限寻呼机

java - 即使用户不再触摸按钮,是否可以延长 Android 上的按钮触摸效果?