最近做项目要求某种情况下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,来切换页面。