2019.01.28至2019.02.2.周技术学习总结(重点复习ViewPager嵌套事件传递冲突)

本文深入解析ViewPager嵌套事件冲突及onInterceptTouchEvent机制,详细阐述down、move、up事件如何在ViewGroup与目标View间传递,以及如何通过dispatchTouchEvent和getParent().requestDisallowInterceptTouchEvent()避免事件拦截。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ViewPager嵌套事件传递冲突

onInterceptTouchEvent()的机制规则

1.down事件首先会传递到onInterceptTouchEvent

2.如果ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后,return false,那么后续的move、up等事件将继续先传递给ViewGroup,之后才和down事件一样传递给最终的目标View的OnTouchEvent()处理

3.如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return true,那么后续的move、up等事件将不再传递给onInterceptTouchEvent(),而是和down事件一样传递给该ViewGroup的onTouchEvent()处理,目标View接收不到任何事件

4.如果最终需要处理事件的View的onTouchEvent()返回了false,那么该事件将被传递给其上一层的View的onTouchEvent()处理

5.如果最终需要处理事件的View的onTouchEvent()返回了true,那么后续事件将可以继续传递给该View的onTouchEvent()处理

6.不让父类拦截事件的方法

   重写dispatchTouchEvent(MotionEvent ev)

   getParent().requestDisallwoInterceptTouchEvent(true);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值