阅读量:2
要设置ViewPager的边界滑动,可以通过重写ViewPager的onInterceptTouchEvent方法和onTouchEvent方法来实现。在这两个方法中判断当前ViewPager是否处于边界位置,如果处于边界位置则不拦截触摸事件或者不进行滑动操作。
具体步骤如下:
创建一个自定义的ViewPager类,继承自ViewPager。
在自定义ViewPager类中重写onInterceptTouchEvent方法和onTouchEvent方法。
在onInterceptTouchEvent方法中判断当前ViewPager是否处于边界位置,如果是则不拦截触摸事件,返回false;如果不是则返回super.onInterceptTouchEvent(event)。
在onTouchEvent方法中同样判断当前ViewPager是否处于边界位置,如果是则不进行滑动操作,直接返回false;如果不是则返回super.onTouchEvent(event)。
示例代码如下:
public class CustomViewPager extends ViewPager { public CustomViewPager(Context context) { super(context); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent event) { if (getCurrentItem() == 0 || getCurrentItem() == getAdapter().getCount() - 1) { return false; // 边界位置,不拦截事件 } else { return super.onInterceptTouchEvent(event); } } @Override public boolean onTouchEvent(MotionEvent event) { if (getCurrentItem() == 0 || getCurrentItem() == getAdapter().getCount() - 1) { return false; // 边界位置,不进行滑动操作 } else { return super.onTouchEvent(event); } } }
在使用ViewPager时,可以替换原来的ViewPager为自定义的CustomViewPager,这样就可以实现边界滑动的效果。