getParent().requestDisallowInterceptTouchEvent(true)剥夺父view 对touch 事件的处理权
来源:互联网 发布:日语笔译知乎 编辑:程序博客网 时间:2024/05/01 08:57
android 事件处理机制之requestDisallowInterceptTouchEvent
夺取ViewPager的左右滑动requestDisallowInterceptTouchEvent
探究requestDisallowInterceptTouchEvent失效的原因
在开发过程中可能会遇到诸如此类问题:
1、在上下滑动的ScrollView中嵌套一个横滑列表,拖动横滑列表时可能引起ScrollView的上下滑动导致体验极差
2、在ViewPager中嵌套了一个横滑列表,在拖动横滑列表时同样可能导致ViewPager的tab切换。
requestDisallowInterceptTouchEvent 是ViewGroup类中的一个公用方法,参数是一个boolean值,官方介绍如下
when a child does not want this parent and its ancestors to intercept touch events with ViewGroup.onInterceptTouchEvent(MotionEvent).
This parent should pass this call onto its parents. This parent must obey this request for the duration of the touch (that is, only clear the flag after this parent has received an up or a cancel.
android系统中,一次点击事件是从父view传递到子view中,每一层的view可以决定是否拦截并处理点击事件或者传递到下一层,如果子view不处理点击事件,则该事件会传递会父view,由父view去决定是否处理该点击事件。在子view可以通过设置此方法去告诉父view不要拦截并处理点击事件,父view应该接受这个请求直到此次点击事件结束。
实际的应用中,可以在子view的ontouch事件中注入父ViewGroup的实例,并调用requestDisallowInterceptTouchEvent去阻止父view拦截点击事件
public boolean onTouch(View v, MotionEvent event) { ViewGroup viewGroup = (ViewGroup) v.getParent(); switch (event.getAction()) { case MotionEvent.ACTION_MOVE: viewGroup.requestDisallowInterceptTouchEvent(true); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: viewGroup .requestDisallowInterceptTouchEvent(false); break; }}
- getParent().requestDisallowInterceptTouchEvent(true)剥夺父view 对touch 事件的处理权
- Android - requestDisallowInterceptTouchEvent() 阻止父层的View截获touch事件(事件处理机制)
- View的requestDisallowInterceptTouchEvent对事件的影响
- view对touch事件的处理
- View对Touch事件的处理
- 源码分析为什么requestDisallowInterceptTouchEvent(true)能阻止父View拦截事件
- Android事件处理第一节(View对Touch事件的处理)
- Android事件处理第一节(View对Touch事件的处理)
- requestDisallowInterceptTouchEvent(true)的使用
- android中View和ViewGroup对touch事件对象的处理方法
- View Touch事件处理机制
- View的touch事件
- View事件分发机制——requestDisallowInterceptTouchEvent的用法
- 禁用view的touch事件
- View的touch事件分发。
- requestDisallowInterceptTouchEvent解决子View和父View滑动的冲突
- android View 系统 touch 事件处理
- Android对touch事件的拦截处理机制
- JAX-RS RESTful webservice 服务端及客户端实现(基于HTTPS双向认证)
- linux 创建守护进程
- 一篇文读懂19款数据分析软件,解救选择困难症!
- JPA/Hibernate一些链接
- 性能优化攻略
- getParent().requestDisallowInterceptTouchEvent(true)剥夺父view 对touch 事件的处理权
- 查找树——搜索二叉树(非递归)
- LeetCode209
- 2016MDCC移动开发者大会参后感
- 图片轮播--纯css
- 被说了很多遍的设计模式---代理模式
- 整理一下HIVE概念
- 搭建Nagios监控环境遇到的几个问题
- 你应当如何学习C++(以及编程)(rev#1)