禁止滑动的NoScrollViewPager

0
回复
393
查看
[复制链接]

5

主题

91

帖子

1267

安币

Android大神

Rank: 6Rank: 6

发表于 2017-12-27 10:15:01 | 显示全部楼层 |阅读模式
如果对本篇文章感兴趣,请前往,原文地址:http://www.apkbus.com/blog-842132-76752.html

大家经常会使用ViewPager Fragment,然后在fragment中会有左右滑动的view,当view滑动到最右边时会自动滑到viewpager的下一个item,如果项目要求ViewPager禁止自动滑动,这自定义的ViewPager就对你有用了!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);    }}用法 在xml中引入,在activity中viewpager.setNoScroll(true);就行了其实就是处理了一下点击事件,public boolean onInterceptTouchEvent(MotionEvent ev)     该方法用户拦截被传递过来的事件,用于判断被传递过来的事件是否需要被当前的view进行处理。     return false : 不对事件进行拦截,放行该事件。事件会被传递到当前view的子控件中,由子控件中的dispatchTouchEvent方法进行分发处理。     return true : 拦截该事件,将该事件交给当前view的onTouchEvent方法进行处理。     return super.inInterceptTouchEvent(ev):默认拦截方式,和return true一样。该事件会被拦截,将该事件交给当前view的onTouchEvent方法进行处理。我的理解是NoScrollViewPager中的onInterceptTouchEvent方法返回了了false,则没有消费此事件,会想下传递,但是他又没有子View了!!!我也就个人理解,,欢迎大家指正!  继续阅读全文



想在安卓巴士找到更多优质博文,可移步博客区

如果对本篇文章感兴趣,请前往,
原文地址:
http://www.apkbus.com/blog-842132-76752.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )