文章概述:
本篇文章记录,解决github上开源框架android-Ultra-Pull-To-Refresh内嵌套viewpager的滑动冲突问题。
问题描述:
liaohuqiu 开源的 android-Ultra-Pull-To-Refresh 下拉刷新框架,在使用时,会经常遇到嵌套banner的使用场景,即:子ViewGroup嵌套ViewPager使用,例如:
1 | <com.vic.bmar.widgets.PtrClassicRefreshLayout |
PtrClassicRefreshLayout是PtrFrameLayout的子类,默认实现了头部刷 新时的样式,可以直接拿来使用。
这时候会与ViewPager发生滑动冲突,ViewPager左右很难滑动,作者已经给出了一种解决方法:
1 | //左右滑动时刷新控件禁止掉 |
这样做ViewPager可以左右滑动了,但是左右滑动有时还是不好滑动,并且,ViewPager滑动时经常会触发PtrFrameLayout的刷新样式,用户体验很差。
解决方案
1. 重写ViewPager
1 | public class BannerViewPager extends ViewPager { |
2. 重写PtrClassicRefreshLayout
这里为了方便,就不自定义刷新样式,直接使用PtrClassicRefreshLayout刷新样式,如果想重写刷新样式,可以继承PtrFrameLayout。
1 | public class PtrClassicRefreshLayout extends PtrClassicFrameLayout { |
直接copy这两个自定义组件的代码使用,再加上作者推荐的设置:
pcflFrameLayout.disableWhenHorizontalMove(true);
即可解决android-Ultra-Pull-To-Refresh下拉刷新框架与viewpager使用冲突问题.
