GestureDetector:允许在不使用touch事件的情况下调用onScroll

问题描述

因此,我在屏幕上的布局都可以在任何地方捕捉到滚动和滑动事件。问题是,除非消耗了监听器,否则您将无法执行此操作,因此,其他视图的touchListener将永远不会调用,并且这种情况不会发生。

示例代码如下:

private val onTouchListener = object : View.OnTouchListener {
    override fun onTouch(v: View?,motionEvent: MotionEvent): Boolean {

        //this block will be reached only once,even when you scroll

        GestureDetector(activity,object : GestureDetector.SimpleOnGestureListener() {
            override fun onScroll(e1: MotionEvent?,e2: MotionEvent?,distanceX: Float,distanceY: Float): Boolean {
                //is never called
                return false
            }
            override fun onFling(e1: MotionEvent?,distanceY: Float): Boolean {
                //is never called
                return false
            }
        })

        return false //if this will be 'true',the block will be reached for as long as the touch continues,but touch events bellow it won't invoke
    }
}

这是android对这个问题的评论。老实说,这似乎不太公平。

来自:http://developer.android.com/guide/topics/ui/ui-events.html

onTouch()-这将返回一个布尔值,以指示您的侦听器是否 消耗此事件。重要的是,此事件可以 彼此跟随的多个动作。因此,如果您在以下情况下返回false 收到降动作事件,表示您尚未 消耗了事件,并且对后续操作不感兴趣 从这个事件。因此,您不会被要求采取任何其他行动 在事件中,例如手指手势或最终的向上动作 事件。

我该怎么办?谢谢

解决方法

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

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

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