前言

项目中用ViewPager2+Fragment替换ViewPager+Fragment做图片浏览功能,替换完后发现ViewPager2和Fragment中存在事件冲突,比如Fragment存在对图片进双指缩放等处理。

因此,需要我们自己处理冲突事件。

正文

思路:
  1. 重写mAnimViewPager的[父控件]的dispatchTouchEvent事件
  2. 触摸down时不让[父控件]拦截,优先[子控件]处理
  3. 判断是否左右滑动,让[父控件]处理,[父控件]会根据自身情况判断是否拦截事件
  4. 触摸up时恢复默认

PS: 不过,这种方式还是存在偶尔不灵敏

优先不让父控件拦截,先让子控件先处理可以通过如下属性设置

//不允许mAnimViewPager[父控件]拦截事件
mAnimViewPager.requestDisallowInterceptTouchEvent(true);

//mAnimViewPager[父控件]会根据自身情况判断是否拦截事件
mAnimViewPager.requestDisallowInterceptTouchEvent(false);

ViewPager2+Fragment的冲突也是,判读是否Fragment是否需要事件,如果需要事件,就不允许父类拦截,否则就让父类自行处理。

隐藏内容!
付费阅读后才能查看!
3
多个隐藏块只需支付一次

参考文章

  1. ViewPager2 与 ScrollView事件冲突解决 | 码农家园 (codenong.com)
  2. 这可能是ViewPager2滑动冲突最全处理方案 – 掘金 (juejin.cn)

相关文章

暂无评论

none
暂无评论...