解决内部ViewPager不能向左滑动的bug
来源:互联网 发布:淘宝银泰百货旗舰店 编辑:程序博客网 时间:2024/06/06 05:42
dispatchTouchEvent方法,请求父视图不要拦截事件。但是这样做又带来了一个新的问题,当反拦截以后,外部的SlidingMenu和ViewPager将不再响应事件。所以反拦截是有条件的。 自定义ViewPager,重写 设置是否拦截事件为 getParent().requestDisallowInterceptTouchEvent(false);
二.水平方向滑动1.当滑动到第一个页面,并且方向是从左到右的滑动 endX - startX > 0 那么方向就是:从左往右滑动 getParent().requestDisallowInterceptTouchEvent(false);
2.当滑动到最后一个页面的时候,并且方向是从右到左滑动endX - startX < 0 那么方向就是:从右往左滑动getParent().requestDisallowInterceptTouchEvent(false);
3.其他情况getParent().requestDisallowInterceptTouchEvent(true);具体代码如下
private float lastX; private float lastY; @Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: // down的时候要先把事件传到最里面 然后根据情况是否是父亲拦截 getParent().requestDisallowInterceptTouchEvent(true); lastX = ev.getRawX(); lastY = ev.getRawY(); break; case MotionEvent.ACTION_MOVE: float dx = ev.getRawX() - lastX; float dy = ev.getRawY() - lastY; //判断是水平滑动还是垂直滑动 if (Math.abs(dx) > Math.abs(dy)) { //水平滑动 if (getCurrentItem() == 0 && dx > 0) { //从左向右滑 不请求 getParent().requestDisallowInterceptTouchEvent(false); } else if (getCurrentItem() == getAdapter().getCount() - 1 && dx < 0) { getParent().requestDisallowInterceptTouchEvent(false); } else { getParent().requestDisallowInterceptTouchEvent(true); } } else { //垂直滑动 不请求 getParent().requestDisallowInterceptTouchEvent(false); } break; case MotionEvent.ACTION_UP: break; } return super.dispatchTouchEvent(ev); }这样顶部ViewPager及外面的SlidingMenu和ViewPager切换就正常了。
0 0
- 解决内部ViewPager不能向左滑动的bug
- 关于ViewPager嵌套内部ViewPager不能响应滑动的的分析与解决
- ViewPager嵌套时内部的ViewPager不能滑动
- 解决ViewPager嵌套后子ViewPager不能滑动的方法
- 解决ViewPager嵌套后子ViewPager不能滑动的问题
- 解决ScrollView嵌套ViewPager,导致ViewPager不能滑动的问题
- 不能滑动的ViewPager
- 不能滑动的ViewPager
- 解决scrollView嵌套viewpager+listview,scrollview不能滑动的问题
- 解决含有Textview布局在viewpager等横向滑动中滑动不流畅的bug
- 解决ViewPager嵌套后子ViewPager不能滑动问题
- ViewPager嵌套ViewPager滑动问题的解决
- ViewPager与Item滑动冲突的bug
- 解决viewpager嵌套viewpager,子viewpager无法滑动的问题
- 设置viewpager不能滑动
- 设置viewpager不能滑动
- 解决viewpager滑动速度的设置问题
- 解决ViewPager双层嵌套的滑动问题
- 给指定的String类型时间添加指定时长
- leetcode110 Balanced Binary Tree
- 麦子学院IT资源
- 应用调试之使用strace命令跟踪系统调用
- HDU 1007-Quoit Design
- 解决内部ViewPager不能向左滑动的bug
- IO流类之间关系图
- 轮播图源码分析
- axios-mock-adapter
- FFMPEG Tips (2) 如何提取码流的基本信息
- JavaScript自定义事件广播与订阅
- Java笔记之垃圾回收机制
- Java中类的加载和初始化
- Problem A: 求平均年龄