ViewPager2事件冲突问题

Android 3xcn.com@站长2022年9月10日 am8:08发布1年前 (2023)更新
0
导航号,我的单页导航
目录

前言

项目中用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
6
多个隐藏块只需支付一次

参考文章

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

版权声明 1、 本站名称 91易搜
2、 本站网址 https://www.91es.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权请留言
4、 本站禁止发布或转载任何违法的相关信息,如有发现请向站长举报
导航号,我的单页导航

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...