You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何防止ViewGroup接收ACTION_CANCEL事件?问题分析与解决

自定义ViewGroup中ACTION_CANCEL异常触发问题

我现在完全陷入困境,翻遍了所有关于ACTION_CANCEL的相关问题及官方文档,均无法解决我的问题。

以下是我的场景示例:将自定义ViewGroup(内部类)设置为Activity的内容视图:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(GestureView(applicationContext))
    }

    private class GestureView(context: Context) : ViewGroup(context) {

        init {
            setBackgroundColor(Color.BLUE)
        }

        override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {

        }

        override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {
            Log.d("GestureView", "(onInterceptTouchEvent) " +
                    MotionEvent.actionToString(ev!!.actionMasked)
            )
            return true
        }

        @SuppressLint("ClickableViewAccessibility")
        override fun onTouchEvent(event: MotionEvent?): Boolean {
            Log.d("GestureView", "(onTouchEvent) " +
                    MotionEvent.actionToString(event!!.actionMasked)
            )
            return true
        }

    }
}

我需要实现单指按住屏幕、另一手指移动的特定手势,但操作时经常收到如下事件序列:

(onInterceptTouchEvent) ACTION_DOWN
(onTouchEvent) ACTION_DOWN
(onTouchEvent) ACTION_MOVE
(onTouchEvent) ACTION_MOVE
(onTouchEvent) ACTION_MOVE
(onTouchEvent) ACTION_POINTER_DOWN(0)
(onTouchEvent) ACTION_MOVE
(onTouchEvent) ACTION_CANCEL
(onInterceptTouchEvent) ACTION_DOWN
(onTouchEvent) ACTION_DOWN
(onTouchEvent) ACTION_POINTER_DOWN(0)
(onTouchEvent) ACTION_MOVE
(onTouchEvent) ACTION_MOVE
(onTouchEvent) ACTION_POINTER_UP(0)
(onTouchEvent) ACTION_MOVE
(onTouchEvent) ACTION_CANCEL

触发ACTION_CANCEL后,该手势不再接收后续事件,必须抬起所有手指才能重新开始。

请问该取消事件为何发生?如何阻止它以继续手势操作?

我已尝试以下方案,但均无效果:

  • 在onInterceptTouchEvent()中返回true或false;
  • 使用dispatchTouchEvent()替代onInterceptTouchEvent();
  • 添加requestDisallowInterceptTouchEvent(true)(因无父视图拦截,此方法无效)。

内容的提问来源于stack exchange,提问作者Mahm00d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:57:21