前言

项目中需要用ViewPager+Fragment组合使用,比如很见的就是图片暂时。每个客户需求不一样,有些需要左右滑动,有序不需要,因此需要禁止左右滑动切换界面。

本文代码是摘的,也验证OK,感谢分享。

正文

直接上代码,要介绍的可以看摘抄的文章。

public class NoScrollViewPager extends ViewPager {
    //默认禁止左右滚动和滚动动画
    private boolean mCanScroll = false;
    private boolean mHasScrollAnim = false;

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

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

    /**
     * 设置其是否能滑动
     *
     * @param canScroll false 禁止滑动, true 可以滑动
     */
    public void setCanScroll(boolean canScroll) {
        mCanScroll = canScroll;
    }

    /**
     * 设置是否去除滑动效果
     *
     * @param hasScrollAnim false 去除滚动效果, true 不去除
     */
    public void setHasScrollAnim(boolean hasScrollAnim) {
        mHasScrollAnim = hasScrollAnim;
    }


    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return mCanScroll && super.onInterceptTouchEvent(ev);
    }

    @SuppressLint("ClickableViewAccessibility")
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return mCanScroll && super.onTouchEvent(ev);
    }

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

    /**
     * 设置其是否去求切换时的滚动动画
     * mHasScrollAnim为false时,会去除滚动效果
     */
    @Override
    public void setCurrentItem(int item) {
        super.setCurrentItem(item, mHasScrollAnim);
    }
}

参考文章

  1. ViewPager屏蔽左右滑动和切换时的滚动动画

相关文章

暂无评论

none
暂无评论...