首页 > 系统 > Android > 正文

android-Ultra-Pull-To-Refresh嵌套ViewPager滑动冲突解决

2019-11-06 09:55:20
字体:
来源:转载
供稿:网友

在项目中首页使用了android-Ultra-Pull-To-Refresh组件实现下拉刷新,首页顶部是一个轮播的ViewPage,发现手动滑动ViewPage的时候非常困难。在框架主页的issues中也能看到这个问题,但是一直没有被解决。

在android-Ultra-Pull-To-Refresh的源码托管ReadMe的末尾发现work with ViewPager: disableWhenHorizontalMove(),翻译过来就是和ViewPager一起使用,但是我们调用了这个方法后发现然并卵,那么问题在哪里呢?

于是从PtrFramLayout源码的dispatchTouchEvent开始看源码,找到如下代码:

      if (mDisableWhenHorizontalMove && !mPReventForHorizontal && (Math.abs(offsetX) > mPagingTouchSlop && Math.abs(offsetX) > Math.abs(offsetY))) {                    if (mPtrIndicator.isInStartPosition()) {                        mPreventForHorizontal = true;                    }                }

我们既然要禁用横向滑动的拦截,那么判断操作为横向并且要禁用横向拦截时给mPreventForHorizontal赋值为true即可,并不需要判断滑动距离。

所以把Math.abs(offsetX) > mPagingTouchSlop这句代码删掉即可,同时mPagingTouchSlop这个变量没什么用了,删掉即可。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表