码个蛋(codeegg)第 818 次推文
作者:nanchen2251
博客:https://juejin.im/post/5d2dc5e95188257b775d3e40
码妞看世界
你那边的银杏叶什么变黄了吗?
冲突情况
在 Android 开发中,滑动冲突总是我们一个无法避免的话题。而对于解决方案却是众说纷纭,比如 RecyclerView
嵌套 RecyclerView
,直接通过相关方法禁掉内部 RecyclerView
的滑动;ScrollView
嵌套 RecyclerView
直接把 ScrollView
替换为 NestedScrollView
等等。
但我们今天要说的是在自定义 View 中遇到滑动冲突时,我们又应该如何处理呢?
当然,今天的话题需要 View 的事件分发机制做理论前提。
1. 简单介绍 View 的事件分发机制
当然,这里也可以简单地提一下,基本的流程就是下面的伪代码。
public boolean dispatchTouchEvent(MotionEvent ev) {
boolean consume = false; if (onInterceptTouchEvent(ev)) {
consume = onTouchEvent(ev); }else{
consume = child.dispatchTouchEvent(ev); } return consume;}
当一个 ViewGroup
接收到一个事件的时候,首先会调用 dispatchTouchEvent