TabLayout+ViewPager禁止滑动

1、重写ViewPager并重写覆盖ViewPager的onInterceptTouchEvent(MotionEvent arg0)方法和onTouchEvent(MotionEvent arg0)方法,这两个方法的返回值都是boolean类型的,只需要将返回值改为false,那么ViewPager就不会消耗掉手指滑动的事件了,转而传递给上层View去处理或者该事件就直接终止了。


2、和TabLayout一起使用的时候,点击TabLayout上的按钮还会有滑动的效果,接下来的处理super.setCurrentItem(item, false);表示切换的时候,不需要切换时间。 
就可以去掉那个滑动效果了
 


public class NoScrollViewPager extends ViewPager {
    private boolean noScroll = false;


    public NoScrollViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }


    public NoScrollViewPager(Context context) {
        super(context);
    }


    public void setNoScroll(boolean noScroll) {
        this.noScroll = noScroll;
    }


    @Override
    public void scrollTo(int x, int y) {
        super.scrollTo(x, y);
    }


    @Override
    public boolean onTouchEvent(MotionEvent arg0) {
        if (noScroll)
            return false;
        else
            return super.onTouchEvent(arg0);
    }


    @Override
    public boolean onInterceptTouchEvent(MotionEvent arg0) {
        if (noScroll)
            return false;
        else
            return super.onInterceptTouchEvent(arg0);
    }


    @Override
    public void setCurrentItem(int item, boolean smoothScroll) {
        super.setCurrentItem(item, smoothScroll);
    }


    @Override


    public void setCurrentItem(int item) {


        super.setCurrentItem(item, false);//表示切换的时候,不需要切换时间。


    }


}

 

你可能感兴趣的:(android相关)