ViewPager嵌套ViewPager不能响应滑动事件解决方法
来源:互联网 发布:什么软件下载网 编辑:程序博客网 时间:2024/06/05 08:56
不响应原因:
ViewPager 嵌套ViewPager或者嵌套ViewFlipper都不能正确相应滑动事件,皆因嵌套的子view在TouchEvent传递过程中没有消费此次事 件,而由parent View消费了事件,从而在后续的TouchEvent (ACTION_MOVE或者ACTION_UP)传递过程中就不会传递到子view的onTouchEvent那,所以无法响应触摸事件。
关于传递 简单理解就是从上到下 从爷爷view到孙子等等的view:
如果上层onInterceptTouchEvent 返回 false 那么就由本层 onTouchEvent 处理
如果本层onTouchEvent返回true 则表示消费这个事件
如果上层onInterceptTouchEvent 返回 true 所有的move down都让本层给截取了 也就不往下传递了
更多了解在上一篇文章 《Android onTouch事件传递机制》
解决的办法:
一:重写被嵌套的ViewPager,实现onInterceptTouchEvent()方法,拦截TouchEvent。(此方法较为复杂,不建议使用)
二:实现parent View的dispatchTouchEvent()方法,将TouchEvent派发给子View的onInterceptTouchEvent(),并拦截。
[java] view plaincopy
- public boolean dispatchTouchEvent(MotionEvent ev)
- {
- boolean ret = super.dispatchTouchEvent(ev);
- if(ret)
- {
- ((ViewGroup)itemViewPager.getParent()).requestDisallowInterceptTouchEvent(true);
- }
- return ret;
- }
三:对子view实现setOnTouchListener(new ...)监听,在onTouch()方法里,进行拦截。调用当前子view的onInterceptTouchEvent()方法。
[java] view plaincopy
- public boolean onTouch(View v, MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_MOVE:
- ((ViewParent) v.getParent()).requestDisallowInterceptTouchEvent(true);
- break;
- case MotionEvent.ACTION_UP:
- case MotionEvent.ACTION_CANCEL:
- ((ViewParent) v.getParent()).requestDisallowInterceptTouchEvent(false);
- break;
- }
- }
0 0
- ViewPager嵌套ViewPager不能响应滑动事件解决方法
- ViewPager嵌套ViewPager不能响应滑动事件解决方法
- 对于ViewPager中嵌套的Viewpager不能响应滑动事件的解决方法
- 关于ViewPager嵌套内部ViewPager不能响应滑动的的分析与解决
- 解决ViewPager嵌套后子ViewPager不能滑动的方法
- 解决ViewPager嵌套后子ViewPager不能滑动问题
- 解决ViewPager嵌套后子ViewPager不能滑动的问题
- ViewPager嵌套时内部的ViewPager不能滑动
- 解决ScrollView嵌套ViewPager,导致ViewPager不能滑动的问题
- ListView中嵌套ViewPager滑动事件冲突
- ViewPager中嵌套VieRecyclerView 滑动事件解决
- Android ViewPager嵌套ViewPager滑动冲突的解决方法
- Android ViewPager嵌套ViewPager滑动冲突的解决方法
- ViewPager相互嵌套,里层ViewPager无法滑动的解决方法
- 处理ViewPager嵌套ViewPager的滑动事件冲突
- 处理ViewPager嵌套ViewPager的滑动事件冲突
- viewpager嵌套viewpager滑动处理
- ViewPager 嵌套 ViewPager的解决方法
- BitNami
- 高级人工智能 读书笔记
- 聊聊高并发(二十七)解析java.util.concurrent各个组件(九) 理解ReentrantLock可重入锁
- pyhton 从web获取json数据 保存到本地然后再读取
- 计算代码段的运行时间
- ViewPager嵌套ViewPager不能响应滑动事件解决方法
- MeanShift跟踪算法
- PHP脚本执行超时的解决办法
- ap
- 什么是类 对象 实例
- 用NDK r9版本编译cocos2d x 2.0.4碰到的各个坑
- 导入项目,js文件报错
- Lync Server 2010 部署(下)
- HDU 2586 How far away? LCA 离线tarjan