最近做项目要求某种情况下ViewPager不能滑动,在网上找了一圈。有说重写Ontouch的,各种。都试了试,基本都不可用。 

自己看ViewPager源码,知道VIewPager移动全部都调用了scrollTo方法,这个是View的方法,那么我们只需要重写这个方法就可以禁止ViewPager滑动 

Java代码

1. public class CustomViewPager extends ViewPager {  
2.   
3.     private boolean isCanScroll = true;  
4.   
5.     public CustomViewPager(Context context) {  
6.         super(context);  
7.     }  
8.   
9.     public CustomViewPager(Context context, AttributeSet attrs) {  
10.         super(context, attrs);  
11.     }  
12.   
13.     public void setScanScroll(boolean isCanScroll){  
14.         this.isCanScroll = isCanScroll;  
15.     }  
16.   
17.   
18.     @Override  
19.     public void scrollTo(int x, int y){  
20.         if (isCanScroll){  
21.             super.scrollTo(x, y);  
22.         }  
23.     }

此时,ViewPager.setCurretItem方法也会失效,想通过点击Tab button 切换page也无法实现。



二、setOnTouchListener

ViewPager.setOnTouchListener(new View.OnTouchListener(){
        on touch ( xx ){
return true;
        }
});

这种方式可以实现只禁止滑动翻页,可以通过setCurrentItem,来切换页面。