仅拦截点击事件

时间:2020-08-19 13:40:57

标签: android android-viewpager android-touch-event

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

0 个答案:

没有答案