自定义View系列教程08--滑动冲突的产生及其处理
发布日期:2021-06-30 11:17:17 浏览次数:2 分类:技术文章

本文共 669 字,大约阅读时间需要 2 分钟。

版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

概述

在之前的几篇文章中,我们已经分析了View对于Touch的处理以及ViewGroup对于Touch事件的分发。

但在开发中时常遇到一个棘手的问题:Touch事件的滑动冲突。比如ListView嵌套ScrollView,ViewPager嵌套ScrollView,ListView嵌套ScrollView时常常发生。

这些滑动冲突的产生,一般而言都具有以下特点:

  1. 子View和父View都有滑动的需求
  2. 滑动事件不能准确地传递给合适的View

其实,Google官方不鼓励这种滑动嵌套的设计;但是在实际项目中却会碰到客户提出类似的要求。既然不太合理的东西已经存在了,开发人员再去抱怨设计或者客户都没有实际作用了,只有想办法完成对应的功能。

那么,有哪些方法可以解决滑动冲突呢?

  1. 子View禁止父View拦截Touch事件

    在分析ViewGroup的dispatchTouchEvent()源码时,我们知道:Touch事件是由父View分发的。如果一个Touch事件是子View需要的,但是被其父View拦截了,子View就无法处理该Touch事件了。在此情形下,子View可以调用requestDisallowInterceptTouchEvent( )禁止父View对Touch的拦截

  2. 在父View中准确地进行事件分发和拦截

    我们可以重写父View中与Touch事件分发相关的方法,比如onInterceptTouchEvent

转载地址:https://it9527.blog.csdn.net/article/details/51656492 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:推翻自己和过往,重学自定义View
下一篇:自定义View系列教程07--详解ViewGroup分发Touch事件

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月17日 09时44分43秒