1
  • 最佳答案

    onInterceptTouchEvent即使返回false或者super,就会把事件给到子view了。如果子view的dispatchTouchEvent方法返回false,才会给到onTouchEvent,如果子view的dispatchTouchEvent返回true,则消费掉,如果是super则由子view的onTouchEvent处理。


    你这里说因为返回了false,而mDownX是老的值,不是下手的地方,这个问题可以解决的。在onInterceptTouchEvent方法的down的时候获取值吧。

    1153952789488054272  评论     打赏       拉大锯
    • 燃烧的腿毛  回复 @拉大锯
      哦哦,酱样子啊。事件分发那块我老是搞不懂,老是混淆概念。嗯嗯,我在onInterceptTouchEvent方法的ACTION_DOWN里面取值吧。
      燃烧的腿毛 2020-08-16 02:12:12   回复 1249631682693173248
    • 拉大锯  回复 @燃烧的腿毛
      嗯,不用记,就那么几个值,遇到问题的时候,看看API文档或者看看文章即可。
      拉大锯 2020-08-16 02:26:23   回复 1153952789488054272
    • 松仔  回复 @拉大锯
      代码是21年写的,当时发现了问题没能力解决,现在都快25年了,工作3年回来看项目的时候再看这个问题,我还去翻了书上有关于事件分发的原理,搞了半天还是没解决,大半夜翻一下论坛醍醐灌顶,自己还是太菜了,哎
      松仔 2024-11-28 06:01:30   回复 1340907184636157952
相关问题
_七月流火 · Android / 自定义View
2020-03-26 20:02 483 5
资质平平 · 自定义View
2022-07-27 13:40 101 10
帅气的阿亮(0基础学代码) · 学习
2026-02-03 17:56 33 2
后会有期 · Nuxt
2025-10-01 09:11 35 6
下雨天像 · 找工作 / 面试题
2025-08-10 17:31 39 16
资质平平 · Android
2025-02-20 09:14 134 100