首先应该重写viewPager:
public class MyViewPager extends ViewPager {
private boolean isCanScroll;
public MyViewPager(Context context) {
super(context);
isCanScroll = true;
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
isCanScroll = true;
}
public void setCanScroll(boolean isCanScroll){
this.isCanScroll = isCanScroll;
}
@Override
public void scrollTo(int x, int y){
if (isCanScroll){
super.scrollTo(x, y);
}
}
//这两种方法都行
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (!isCanScroll) {
this.requestDisallowInterceptTouchEvent(true);
}
return super.onInterceptTouchEvent(event);
}
@Override
protected boolean canScroll(View arg0, boolean arg1, int arg2, int arg3, int arg4) {
return isCanScroll;
}
}
再在子pager中设置isCanScroll,因为我给ViewPager添加的是Fragment,所以用
myViewPager = (MyViewPager)getActivity().findViewById(R.id.viewpager);
myViewPager.setCanScroll(false);
上面的思路是参考:
http://stackoverflow.com/questions/7098868/viewpager-inside-viewpager