viewpage里面放了一个imageview,MotionEvent.ACTION_MOVE里面设置imageview随着手指滑动,onTouchEvent是返回了true。纵向滑动没有问题,横向滑动会出现滑动一点点距离就划不动了,viewpage开始滑动。这是什么情况的。viewpage是横向的。
viewpage里面放了一个imageview,MotionEvent.ACTION_MOVE里面设置imageview随着手指滑动,onTouchEvent是返回了true。纵向滑动没有问题,横向滑动会出现滑动一点点距离就划不动了,viewpage开始滑动。这是什么情况的。viewpage是横向的。
3 回答883 阅读✓ 已解决
2 回答2.1k 阅读
2 回答988 阅读✓ 已解决
1 回答774 阅读✓ 已解决
2 回答888 阅读
2 回答824 阅读
1 回答765 阅读
因为
ViewPager.onInterceptTouchEvent()
在一般情况下会拦截横向的滑动, 所以你的图片收不到MotionEvent.ACTION_MOVE
动作.解决思路大致为:
在
ViewPager.onInterceptTouchEvent()
的MotionEvent.ACTION_MOVE
下有一下代码可以不拦截横向滑动只要你能执行这段代码, ViewPager就不会拦截这次的横向滑动, 关键的方法应该是
canScroll()
源码如下
大致就是判断里面的子控件是否可以横向滑动
因为你里面最后是一个
ImageView
, 所以最后关键就是ViewCompat.canScrollHorizontally(v, -dx);
当v时ImageView
的时候要返回true
如果你使用的版本较高的话, 实际执行的就是
ImageView.canScrollHorizontally()
方法, 这里面的代码很简单, 就不贴出来了, 这个方法直接继承了View.canScrollHorizontally()
, 返回的是false
, 所以解决方案想到2个用一个可以滑动的控件作为
ImageView
的父控件重写
ImageView.canScrollHorizontally()
, 令到它返回true
推荐方法1
上面的分析没有写代码验证, 可能有错, 欢迎指正