如何在android中停止ViewPager中的垂直滚动事件
我在ViewPager中有两个视图。我想这样做,当垂直滚动事件发生时,它必须到达ViewPager内部的视图,以便孩子们可以采取相应的行动,但当水平滚动发生时,ViewPager必须停止事件,以便他们无法到达孩子们。我希望我能回答清楚我的问题 我已经扩展了ViewPager并覆盖了onInterceptTouchEvent方法,在该方法中我必须检查条件,但我无法确定如何执行。我对android非常陌生,所以如果我问一个幼稚的问题,请接受我 有人能帮我重写onInterceptTouchEvent方法吗 以下是我的尝试:如何在android中停止ViewPager中的垂直滚动事件,android,android-activity,android-viewpager,Android,Android Activity,Android Viewpager,我在ViewPager中有两个视图。我想这样做,当垂直滚动事件发生时,它必须到达ViewPager内部的视图,以便孩子们可以采取相应的行动,但当水平滚动发生时,ViewPager必须停止事件,以便他们无法到达孩子们。我希望我能回答清楚我的问题 我已经扩展了ViewPager并覆盖了onInterceptTouchEvent方法,在该方法中我必须检查条件,但我无法确定如何执行。我对android非常陌生,所以如果我问一个幼稚的问题,请接受我 有人能帮我重写onInterceptTouchEvent
public class CustomViewPager extends ViewPager
{
private GestureDetector mGestureDetector;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
mGestureDetector = new GestureDetector(context, new YScrollDetector());
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
Log.e("LOG","Intercept");
boolean ans=super.onInterceptTouchEvent(ev);
if(mGestureDetector.onTouchEvent(ev))
return false;
return
}
//Now the GestureListener
public class YScrollDetector extends SimpleOnGestureListener {
public boolean onDown(MotionEvent e) {
Log.e("LOG","In down method");
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.e("LOG","On scroll called");
if(Math.abs(distanceY) > Math.abs(distanceX)) {
return true;
}
return false;
}
}
但问题是onScroll方法没有从onInterceptTouchEvent获取任何调用。有人能帮我解决吗。也许你可以看看@erad,它对我的事业没有帮助。你能给我一些建议吗?事实上,在这个答案中,pageviewer在Scrollview中,所以它可以设置为TouchListener,但在我的例子中,它正好相反。我在ViewPager中有DatePicker,我想将垂直滚动事件传递给DatePicker,但当我水平滚动时,它也有一些垂直滚动,所以我想这样做。@erad您能帮我解决这个问题吗。在过去的两天里,我一直在为这个问题苦苦挣扎。