recyclerview嵌套recyclerview滑动冲突_两招解决 Android 滑动冲突

本文介绍了Android开发中自定义View处理滑动冲突的两种方法:外部拦截法和内部拦截法。外部拦截法在父容器中拦截滑动事件,不让事件进入子元素;内部拦截法则通过`requestDisallowInterceptTouchEvent()`控制事件拦截。同时,文章强调了事件分发机制在解决滑动冲突中的关键作用。
摘要由CSDN通过智能技术生成

e2492af7e8782f7000665c32eefdf566.gif

码个蛋(codeegg)第 818 次推文

作者:nanchen2251

博客:https://juejin.im/post/5d2dc5e95188257b775d3e40

码妞看世界

b5be29b52e01fef134aca58c24a8dfed.png

你那边的银杏叶什么变黄了吗?

冲突情况

在 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值