目录
前言
项目中用ViewPager2+Fragment替换ViewPager+Fragment做图片浏览功能,替换完后发现ViewPager2和Fragment中存在事件冲突,比如Fragment存在对图片进双指缩放等处理。
因此,需要我们自己处理冲突事件。
正文
思路:
- 重写mAnimViewPager的[父控件]的dispatchTouchEvent事件
- 触摸down时不让[父控件]拦截,优先[子控件]处理
- 判断是否左右滑动,让[父控件]处理,[父控件]会根据自身情况判断是否拦截事件
- 触摸up时恢复默认
PS: 不过,这种方式还是存在偶尔不灵敏
优先不让父控件拦截,先让子控件先处理可以通过如下属性设置
//不允许mAnimViewPager[父控件]拦截事件
mAnimViewPager.requestDisallowInterceptTouchEvent(true);
//mAnimViewPager[父控件]会根据自身情况判断是否拦截事件
mAnimViewPager.requestDisallowInterceptTouchEvent(false);
ViewPager2+Fragment的冲突也是,判读是否Fragment是否需要事件,如果需要事件,就不允许父类拦截,否则就让父类自行处理。
参考文章
© 版权声明