147_阻止ViewPager滚动

来源:互联网 发布:greenplum数据库 编辑:程序博客网 时间:2024/06/05 09:12


阻止ViewPager滚动



没有什么方法可以直接让ViewPager不滚动

所以我们只能来个自定义ViewPager

onTouchEvent触摸事件

onInterceptTouchEvent拦截触摸事件

两个方法都重写一下

 

我们来个自定义ViewPager

取了个比较吊的名字,自己编的

InscrollableViewPager,无法滚动的ViewPager

 


 

先来两个构造方法

 

public class InscrollableViewPager extends ViewPager {

 

    public InscrollableViewPager(Context context) {

        super(context);

    }

 

    public InscrollableViewPager(Context context, AttributeSet attrs) {

        super(context, attrs);

    }

 

}

 

 

然后就是重写两个方法了

 

    @Override

    public boolean onTouchEvent(MotionEvent ev) {

        return super.onTouchEvent(ev);

    }

 

 

return的是super.onTouchEvent(ev);

是把触摸事件传递给了父类ViewPager,实现了左右滑动的效果

 

那么我们现在想让他不滑动

我们就不处理这个事件

所以我们return一个false,

这样父类ViewPager就拿不到这个事件,也就不会进行处理

 

 


 

然后是onInterceptTouchEvent

 

    @Override

    public boolean onInterceptTouchEvent(MotionEvent ev) {

        return super.onInterceptTouchEvent(ev);

    }

 

这个也是一样,

拦截到的事件会传递给父类ViewPager

如果我们子控件中还有ViewPager或者ListView这种

那么就不能正常响应了

所以我们也要return一个false

 

 

 

 

 

所以两个方法都return false;

 

    @Override

    public boolean onTouchEvent(MotionEvent ev) {

        return false;

    }

 

    @Override

    public boolean onInterceptTouchEvent(MotionEvent ev) {

        return false;

    }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0