在使用ViewPager + Fragment 的时候,有些需求是需要我们设置当前界面不可滑动,而只是设置它的点击事件!为此我们需要将ViewPager 的滑动切换功能取消!在了解到ViewPager的源码之后,得知ViewPager的滑动,依靠的是ScrollTo(x,y) 方法,为此为了使其能够灵活的使用,为此做出以下代码控制滑动!
public class NoScrollViewPager extends ViewPager{
private boolean isCanScroll;
public void setCanScoll(boolean isCanScroll) {
this.isCanScroll = isCanScroll;
}
public NoScrollViewPager(Context context) {
super(context);
}
public NoScrollViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* ViewPager本身的滑动依靠的是 scrollTo
*/
@Override
public void scrollTo(int x, int y) {
if (isCanScroll) {
super.scrollTo(x, y);
}
}
当然你也可以监控ViewPager 中的OnTouch事件对其进行控制。这是控制的方法
@Override
public boolean onTouchEvent(MotionEvent event) {
if (isCanScroll) {
return super.onTouchEvent(event);
} else {
return false;
}
}
通过以上的代码设置,控制了ViewPager的滑动事件!