我有一个viewpager,在viewpager的顶部有3个视图(2x红色和绿色)。我想检测到视图上的单击,但如果不是单击事件,也要将touch事件传递给基础viewpager。
3个视图扩展了InterceptClickView
class InterceptClickView(
context: Context,
attrs: AttributeSet?
) : FrameLayout(context, attrs) {
private var gestureDetector: GestureDetector = GestureDetector(context, object : SimpleOnGestureListener() {
override fun onSingleTapConfirmed(e: MotionEvent?): Boolean {
performClick()
return true
}
override fun onDown(e: MotionEvent?): Boolean {
return false
}
})
override fun onInterceptTouchEvent(event: MotionEvent?): Boolean {
return if (gestureDetector.onTouchEvent(event)) {
true
} else {
super.onTouchEvent(event)
}
}
override fun onTouchEvent(event: MotionEvent?): Boolean {
return gestureDetector.onTouchEvent(event)
}
}
如果我在onDown
中返回 false ,则永远不会调用onSingleTapConfirmed,并且所有触摸事件都将移至viewpager。
但是,如果我返回 true ,则会调用onSingleTapConfirmed,但viewpager不会收到任何触摸事件。
如何实现我的视图接收到clickevent但仍然能够在viewpager中滚动?