android requestDisallowInterceptTouchEvent用途
2015-10-11 14:01
399 查看
ViewPager来实现左右滑动切换tab。假设tab的某一项中嵌入了水平可滑动的View就会让你有些不爽,比方想滑动tab项中的可水平滑动的控件,却导致tab切换。
由于Android事件机制是从父View传向子View的,能够去检測你当前子View是不是在有可滑动控件等,决定事件是否拦截。可是这个麻烦,并且并不能解决全部的问题(必须检測触摸点是否在这个控件上面),事实上有比較简单的方法,在你嵌套的控件中注入ViewPager实例(调用控件的getParent()方法),然后在onTouchEvent。onInterceptTouchEvent。dispatchTouchEvent里面告诉父View。也就是ViewPager不要拦截该控件上的触摸事件。
代码一般例如以下:
当用户按下的时候,我们告诉父组件。不要拦截我的事件(这当子组件能够正常响应的一个事件一时间),拿起会告诉家长成分可以预防。
由于Android事件机制是从父View传向子View的,能够去检測你当前子View是不是在有可滑动控件等,决定事件是否拦截。可是这个麻烦,并且并不能解决全部的问题(必须检測触摸点是否在这个控件上面),事实上有比較简单的方法,在你嵌套的控件中注入ViewPager实例(调用控件的getParent()方法),然后在onTouchEvent。onInterceptTouchEvent。dispatchTouchEvent里面告诉父View。也就是ViewPager不要拦截该控件上的触摸事件。
1 requestDisallowInterceptTouchEvent(true)
代码一般例如以下:
1 public boolean onTouch(View v, MotionEvent event) { 2 switch (event.getAction()) { 3 case MotionEvent.ACTION_MOVE: 4 pager.requestDisallowInterceptTouchEvent(true); 5 break; 6 case MotionEvent.ACTION_UP: 7 case MotionEvent.ACTION_CANCEL: 8 pager.requestDisallowInterceptTouchEvent(false); 9 break; 10 } 11 }
当用户按下的时候,我们告诉父组件。不要拦截我的事件(这当子组件能够正常响应的一个事件一时间),拿起会告诉家长成分可以预防。
相关文章推荐
- Unique Paths II
- 黑马程序员--NSValue的使用
- [BZOJ1626] [Usaco2007 Dec]Building Roads 修建道路
- Leetcode Unique Word Abbreviation
- 快速排序quicksort
- 创建自己的循环Queue底层使用数组java版
- IOS UIBarButtonItem 位置偏移的问题
- 给iOS工程增加Daily Build
- 创建自己的Queue底层实现是链表
- 创建自己的队列Queue底层实现利用数组
- win10 Build 10558预览版《微软电话》应用曝光 内附下载
- 在storyBoard中添加UIScrollView并添加相应的约束
- UE4蓝图案例:制作实时反射镜面材质
- android 5.0UI特效
- poj 2778 DNA Sequence 【AC自动机 + 矩阵加速】
- 《腾讯网UED体验设计之旅》
- easyui-datagrid行数据field原样输出html标签
- lintcode 容易题:Unique Characters 判断字符串是否没有重复字符
- 【小白装系统】——硬盘分区表格式GUID和MBR知识普及
- UITableView自定义cell更换选中的背景色