Android禁止ViewPager的左右滑动
来源:互联网 发布:2016超级女声网络投票 编辑:程序博客网 时间:2024/05/22 20:09
有时候在开发中会遇到一些“诡异”的要求,比如在ViewPager中嵌入ListView,或者再嵌入一个ViewPager,那么在滑动的时候就会造成被嵌入的XXView不能滑动了,那么现在就把最外层的ViewPager禁止滑动吧,让被嵌入的XXView获得滑动事件好了。关于解决方法,网上也有很多说法,基本上是一致的,但是需要理解这个Android下的事件分发机制才行,不明白事件分发机制的,上网查些资料看看,然后我这里也有简单的介绍,请参看博客android自定义控件——侧滑菜单的下方。
怎样禁止ViewPager左右滑动呢?大致就是重写ViewPager,覆盖ViewPager的onInterceptTouchEvent(MotionEvent arg0)方法和onTouchEvent(MotionEvent arg0)方法,这两个方法的返回值都是boolean类型的,只需要将返回值改为false,那么ViewPager就不会消耗掉手指滑动的事件了,转而传递给上层View去处理或者该事件就直接终止了。下面是我的自定义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); } 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); } @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); }}
以上代码特别简单,大家可以直接拷贝使用,无需做任何修改。为了操作方便,我在这个自定义的ViewPager里设置了一个boolean类型的控制变量,并且向外提供了控制ViewPager是否禁止滑动的方法,这样就显得灵活一点了。以下是自定义ViewPager在布局文件中的定义。
阅读全文
0 0
- Android禁止ViewPager的左右滑动
- Android禁止ViewPager的左右滑动
- Android禁止ViewPager的左右滑动
- Android禁止ViewPager的左右滑动
- Android禁止ViewPager的左右滑动
- Android禁止ViewPager的左右滑动
- Android禁止ViewPager的左右滑动
- Android禁止ViewPager的左右滑动
- Android禁止ViewPager的左右滑动
- Android禁止ViewPager的左右滑动
- Android禁止ViewPager的左右滑动
- android viewpager 禁止左右滑动
- Android禁止ViewPager左右滑动
- android viewpager禁止左右滑动
- Android 禁止ViewPager左右滑动
- 禁止左右滑动的ViewPager
- 禁止ViewPager左右滑动
- 禁止ViewPager左右滑动
- css3 字数限制,多出用...代替
- 支持手势缩放的ImageView
- 剑指offer面试题[30]-最小的k个数
- 典型递归问题整理
- lucene 3(相关度排序)
- Android禁止ViewPager的左右滑动
- Java实现-搜索二维矩阵
- java 泛型
- 并发(二):理解volatile
- Android 用MediaCodec实现视频硬解码
- QAbstractSocket::waitForDisconnected() is not allowed in UnconnectedState
- 对于职业、软件学习的感想
- Hdu 2089 不要62
- 大型web系统数据缓存设计