网上的帖子有很多,但是有的支持5.0以下的版本......我写一个兼容5.0以上的版本.
public class NoScrollViewPager extends ViewPager { private boolean isScroll; public NoScrollViewPager(Context context) { super(context); } public NoScrollViewPager(Context context, AttributeSet attrs) { super(context, attrs); } /** * 1.dispatchTouchEvent一般情况不做处理 * ,如果修改了默认的返回值,子孩子都无法收到事件 */ @Override public boolean dispatchTouchEvent(MotionEvent ev) { return super.dispatchTouchEvent(ev); // return true;不行 } /** * 是否拦截 * 拦截:会走到自己的onTouchEvent方法里面来 * 不拦截:事件传递给子孩子 */ @Override public boolean onInterceptTouchEvent(MotionEvent ev) { // return false;//可行,不拦截事件, // return true;//不行,孩子无法处理事件 //return super.onInterceptTouchEvent(ev);//不行,会有细微移动 if (isScroll) { return super.onInterceptTouchEvent(ev); } else { return false; } } /** * 是否消费事件 * 消费:事件就结束 * 不消费:往父控件传 */ @Override public boolean onTouchEvent(MotionEvent ev) { //return false;// 可行,不消费,传给父控件 //return true;// 可行,消费,拦截事件 //super.onTouchEvent(ev); //不行, //虽然onInterceptTouchEvent中拦截了, //但是如果viewpage里面子控件不是viewgroup,还是会调用这个方法. if (isScroll) { return super.onTouchEvent(ev); } else { return true;// 可行,消费,拦截事件 } } public void setScroll(boolean scroll) { isScroll = scroll; } }调用setScroll()方法就行,false是禁止,true是滑动....
还想问一下大神们?
ViewPager除了重Viewpager控件还有其他方法吗?