ViewPager禁止滑动

作者: 唠嗑008 | 来源:发表于2017-03-24 10:34 被阅读218次
一、简介:

有时项目中会有这样的需求:在ViewPager的里面再嵌入ViewPager,那么就有冲突了,简单粗暴的方法就是直接把一个ViewPager禁止滑动。
注意:禁止滑动的同时不能禁止 setCurrentItem 方法。
实现思路:重写ViewPager,覆盖 onTouchEvent 和 onInterceptTouchEvent 方法,使其返回false,这样就等于禁止了ViewPager上的滑动事件。

二、NoScrollViewPager
/**
 * "禁止ViewPager滑动"的辅助类
 */

public class NoScrollViewPager extends ViewPager {

    private boolean noScroll = false;

    public NoScrollViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

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


    /**
     * 供外部调用的方法:设置是否可以滑动
     * @param noScroll true:表示禁止滑动,false:表示可以滑动
     */
    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) {
        /* return false;//super.onTouchEvent(arg0); */
        if (noScroll)
            return false;
        else
            return super.onTouchEvent(arg0);
    }

    /**
     * 返回true:表示拦截
     * 返回false:表示不拦截
     * @param arg0
     * @return
     */
    @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);
    }
}

如果你想更简单一点,这样,简单,粗暴

/**
 * 不可以滑动,但是可以setCurrentItem的ViewPager。
 */
public class NoScrollViewPager extends ViewPager {
    public NoScrollViewPager(Context context) {
        super(context);
    }

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

    @Override
    public boolean onTouchEvent(MotionEvent arg0) {
        return false;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent arg0) {
        return false;
    }
}

相关文章

  • ViewPager禁止滑动

    接着直接在布局里使用这个ViewPager 这样就可以禁止viewpager滑动

  • Viewpager禁止滑动

    前言 现在很多app,首页不允许滑动切换(因为页面加载吧),但是又用viewpage来管理frgament.因为方...

  • ViewPager禁止滑动

    ViewPager的滑动包括以下两个方面: 通过 Touch 触摸的形式进行; 使用遥控器,通过每个Page上面的...

  • 禁止ViewPager滑动

    项目实际需求中可能会有设置ViewPager禁止滑动的需求,此时需要重写ViewPager处理触屏事件

  • ViewPager 禁止滑动

    看到网上有千篇一律的解决方法,我亲测总结了两种方法 截断分发事件,这种方法适合viewpager嵌套使用 返回fa...

  • ViewPager禁止滑动

    一、简介: 有时项目中会有这样的需求:在ViewPager的里面再嵌入ViewPager,那么就有冲突了,简单粗暴...

  • 禁止滑动功能的自定义ViewPager

    /** 提供禁止滑动功能的自定义ViewPager*/public class NoScrollViewPager...

  • 禁止滑动的ViewPager

    ViewPager非常好用,但有时候需要在ViewPager的里面再嵌入ViewPager,那么就有冲突了,简单粗...

  • ViewPager禁止左右滑动

    网上看了很多关于ViewPager禁止左右滑动的方法,自己尝试了下,发现还是第一种修改方式比较好,记录下来,后续考...

  • Android ViewPager 禁止滑动

    public class NoScrollViewPagerextends ViewPager { private...

网友评论

    本文标题:ViewPager禁止滑动

    本文链接:https://www.haomeiwen.com/subject/eyixottx.html