仅拦截点击事件

问题描述

我有一个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中滚动?

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)