ViewPager禁止左右滚动

Android2023年8月1日 am8:08发布1年前 (2023)更新 3XCN.COM站长
0 0 0
广告也精彩
目录

前言

项目中需要用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屏蔽左右滑动和切换时的滚动动画

 历史上的今天

版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站文章: 部分来源于网络,仅供站长学习和参考,若侵权请留言
广告也精彩

相关文章

广告也精彩

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...

网站升级中

公告

近期网站升级中,可能存在一些bug。欢迎反馈 https://www.91es.com/we.html

本站域名

本站域名 : 91es.com3xcn.com。本站邮箱 : 站长邮箱 i@oorr.cn,通知邮箱we@oorr.cn ,如有更新,请看公告 。