ViewPager禁止左右滚动

Android  代码片段  摘抄  2023年8月1日 am8:08发布1年前 (2023)更新 91es.com站长
69 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. 2024: Thread中断简单介绍(0条评论)
  2. 2022: Android GridView horizontalSpacing属性值无效(0条评论)
  3. 2021: 陈先发:前世(0条评论)
  4. 2019: 朱光潜:有趣的灵魂都有静气(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

再见,老何

屋子里灯光照耀,屋子外烟雾缭绕。烟灰最终承受不住自身的重量掉落下来。整个夏夜像被人按上了静音键,只有无声的等待。我在屋里,父亲在屋外。日子被日历一页页撕开,而今天是最后一页。我像往常一样追赶着太阳去学校,仿佛我们就代表着初升的朝阳。阳光透过树叶小心翼翼的洒在课桌上,连它都看出来了分别的气息,笔尖划...

[备忘录]&&和&,||和|的区别

今天有点尴尬,把||跟&&同样有短路作用的搞乱了。备忘一下。java当中的逻辑运算符,&&(短路与)和&表示逻辑与,||(短路或)和|表示逻辑或一、&&和&&&和&都可以表示逻辑与,但他们是有区别的,共同...

framework中添加自己的aidl

前言简单记录一下在Framework中新增一个服务接口,方便应用调用,类似于获取AudioManager一样。AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);Android...

杨绛:人生有命

神明的大自然,对每个人都平等。不论贫富尊卑、上智下愚,都有灵魂,都有个性,都有人性。但是每个人的出身、遭遇和天赋的资质才能,却远不平等。有富贵的、有贫贱的,有天才、有低能,有美人、有丑八怪。凭什么呢?人各有“命”。“命”是全不讲理的。孔子曾慨叹:“命矣夫!斯人也而有斯疾也!斯人也而有斯疾也!”(《论...

Android Switch简介

前言Android中的Switch控件很使用,比如WiFi开关等。Switch可以提供切图,也可以自定义属性。本文就是主要介绍自定义。记录一下,方便自己查阅和回顾。正文activity_main.xml<Switch   style="@style/Widget.AppComp...

adb shell命令控制WIFI连接开启/关闭状态

1、确保机器已经root,使用adb root 试试此命令如果返回如下,就表示不能rootadb: unable to connect for root: no devices/emulators found在上面root后,可以执行如下命令开关WiFi2、打开WIFI指令adb shel...