楼主最近在使用ViewPager时有这样的小需求,baidu之发现实现方法各异,楼主自己读源码觉得我自己的这种比较靠谱:
public class ControlScrollViewPager extends ViewPager {
private boolean scrollable = true;
public ControlScrollViewPager(Context context) {
super(context);
}
public ControlScrollViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setScrollable(boolean enable) {
scrollable = enable;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (scrollable) {
return super.onInterceptTouchEvent(event);
} else {
return false;
}
}
}
ViewPager的父类是ViewGroup,源码中有这段代码:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
/*
* This method JUST determines whether we want to intercept the motion.
* If we return true, onMotionEvent will be called and we do the actual
* scrolling there.
*/
final int action = ev.getAction() & MotionEventCompat.ACTION_MASK;
亲测效果还不错。