在做一个新闻客户端的时候用到了几个ViewPager嵌套,这时候在滑动的时候出现了父类ViewPager拦截了子ViewPager的情况,解决方法如下:
自定义一个ViewPager继承ViewPager,重写它的dispatchTouchEvent方法,代码:
public class HorizontalViewPage extends ViewPager {
public HorizontalViewPage(Context context) {
super(context);
}
public HorizontalViewPage(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
getParent().requestDisallowInterceptTouchEvent(true);
return super.dispatchTouchEvent(ev);
}
}
dispatchTouchEvent方法中使用requestDisallowInterceptTouchevent(true) 设为true 时,父类不再拦截子类的事件
注意:自定义的这个ViewPager作为子类view使用,再调用requestDisallowInterceptTouchEvent时注意要用getParent();