Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中停止ViewPager中的垂直滚动事件_Android_Android Activity_Android Viewpager - Fatal编程技术网

如何在android中停止ViewPager中的垂直滚动事件

如何在android中停止ViewPager中的垂直滚动事件,android,android-activity,android-viewpager,Android,Android Activity,Android Viewpager,我在ViewPager中有两个视图。我想这样做,当垂直滚动事件发生时,它必须到达ViewPager内部的视图,以便孩子们可以采取相应的行动,但当水平滚动发生时,ViewPager必须停止事件,以便他们无法到达孩子们。我希望我能回答清楚我的问题 我已经扩展了ViewPager并覆盖了onInterceptTouchEvent方法,在该方法中我必须检查条件,但我无法确定如何执行。我对android非常陌生,所以如果我问一个幼稚的问题,请接受我 有人能帮我重写onInterceptTouchEvent

我在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您能帮我解决这个问题吗。在过去的两天里,我一直在为这个问题苦苦挣扎。