情况1:ViewPager中的第一个child View 中的子元素要求可以水平滑动.
在实际中遇到的问题是ViewPager中的第一个child View 中的子元素一件拿到了Touch(action=move)的事件,但是滑动的时候距离总是小于ViewConfiguration.get(context).getScaledPagingTouchSlop() ,考虑到ViewPager 本身也可以水平滑动,只是我第一个View
里面右滑的时候ViewPager没有在视觉上面给体现出来,解决方法如下:
增加或者参考如下代码.
private void requestParentDisallowInterceptTouchEvent(boolean disallowIntercept) {final ViewParent parent = getParent();if (parent != null) {parent.requestDisallowInterceptTouchEvent(disallowIntercept);}}@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {requestParentDisallowInterceptTouchEvent(true);return super.dispatchTouchEvent(ev);}
因为ViewPager中的第一个child View已经执行了onInterceptTouchEvent()和onTouchEvent(),但是log 打印的滑动距离确小于实际滑动的距离,所以应该是ViewPager 也处理了滑动事件只是没有消耗掉这些事件,我们要做的就是不让他处理这些事件就好了.
ViewPager中子元素滑动冲突解决
本文介绍了解决ViewPager中首个子视图内部水平滑动冲突的方法。通过重写dispatchTouchEvent方法并调用requestParentDisallowInterceptTouchEvent来阻止ViewPager拦截触摸事件。
689

被折叠的 条评论
为什么被折叠?



