我有一个 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/