关于ViewGroup中requestDisallowInterceptTouchEvent的用法
2015-11-02 14:31
627 查看
在开发过程中可能会遇到诸如此类问题:1、在上下滑动的ScrollView中嵌套一个横滑列表,拖动横滑列表时可能引起ScrollView的上下滑动导致体验极差2、在ViewPager中嵌套了一个横滑列表,在拖动横滑列表时同样可能导致ViewPager的tab切换。 requestDisallowInterceptTouchEvent 是ViewGroup类中的一个公用方法,参数是一个boolean值,官方介绍如下Called 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;}}
相关文章推荐
- Android 手机上获取物理唯一标识码 IMEI和UUID
- UESTC 758 P酱的冒险旅途
- UIImage简谈:[UIImage imageNamed:]与 [UIImage imageWithContentsOfFile]的区别
- Android子线程中更新UI的三种方法和获取message的两种方法总结
- quicksort算法思想
- UESTC 757 棋盘 博弈、策略
- xcode archived issue:'Cordova/CDVViewController.h' file not found
- 解决UITextField中placeholder和text文本同时显示的问题
- HDOJ 5538 House Building (二维坐标求表面积)
- UITEXTFILD
- [IOSS]UITableView分组
- UIImage 拉伸特定的方法
- debian squeeze安装ibus
- 详解UITableViewCell的重用机制和错误解决办法
- 工作队列(workqueue)
- ArrayDeque利用数组建造的双向队列
- Win10预览版10576更新被隐藏的部分 明显的UI改进
- EasyUI - DataGrid 组建 - [ 新增功能 ]
- jsp中的request
- 小胖说事47-----iOS 修复UIImagePickerController偷换StatusBar颜色的问题