主题思路:重写viewpager的onInterceptTouchEvent()方法,当返回值为false的时候左右不能滑动。具体代码如下:
public class MyViewPager extends ViewPager { private boolean isCanScroll = false; public MyViewPager(Context context) { super(context); } public MyViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public void setScanScroll(boolean isCanScroll) { this.isCanScroll = isCanScroll; } @Override public void scrollTo(int x, int y) { super.scrollTo(x, y); } @Override public boolean onTouchEvent(MotionEvent arg0) { // TODO Auto-generated method stub if (isCanScroll) { return super.onTouchEvent(arg0); } else { return false; } } @Override public void setCurrentItem(int item, boolean smoothScroll) { // TODO Auto-generated method stub super.setCurrentItem(item, true); } @Override public void setCurrentItem(int item) { // TODO Auto-generated method stub super.setCurrentItem(item,true); } @Override public boolean onInterceptTouchEvent(MotionEvent arg0) { // TODO Auto-generated method stub if (isCanScroll) { return super.onInterceptTouchEvent(arg0); } else { return false; } } }使用的时候只要调用viewpager. setScanScroll(false)即可