禁止滑动的ViewPager
ViewPager非常好用,但有时候需要在ViewPager的里面再嵌入ViewPager,那么就有冲突了,简单粗暴的方法就是直接把一个ViewPager禁止滑动。
注意:禁止滑动的同时不能禁止 setCurrentItem 方法。
实现思路:重写ViewPager,覆盖 onTouchEvent 和 onInterceptTouchEvent 方法,使其返回false,这样就等于禁止了ViewPager上的滑动事件。
代码
package com.miquan.view;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
/**
* 不可以滑动,但是可以setCurrentItem的ViewPager。
*/
public class NoScrollViewPager extends ViewPager {
public NoScrollViewPager(Context context) {
super(context);
}
public NoScrollViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
return false;
}
}
使用
直接用NoScrollViewPager替代你的ViewPager即可。
原理
ViewPager的处理滑动事件的代码肯定在 onTouchEvent 中,我们重写此方法,并返回false,不再处理滑动事件。同时也重写onInterceptTouchEvent方法并返回fasle,不拦截Touch事件。不拦截,不消费,所有当触摸屏幕的时候从宏观上看就好像没有了这个ViewPager了一样,当然,也就不会滑动到它了。
Github例子:NoScrollViewPager.java
强烈建议读一下:安卓Touch事件的分发流程
原始参考:Android禁止ViewPager的左右滑动
本文介绍了一种禁止ViewPager滑动的方法,通过重写ViewPager的onTouchEvent和onInterceptTouchEvent方法,实现了一个不可滑动但能通过setCurrentItem切换页面的ViewPager组件。
4595

被折叠的 条评论
为什么被折叠?



