正确检测放置在Android中ViewPager内的GridView上的滑动

前端之家收集整理的这篇文章主要介绍了正确检测放置在Android中ViewPager内的GridView上的滑动前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ViewPager,它使用GridViews作为页面.我想在浏览屏幕时ViewPager切换页面.

问题是当在GridView上进行滑动时,不会检测到滑动.在GridView之外,滑动正常工作;似乎GridView正在捕获所有触摸事件而不首先将其传递给ViewPager.

在摆弄源代码的同时,我对从GridView扩展的自定义类做了这样的事情:

@Override
public boolean onTouchEvent(MotionEvent event) {
    return pager.onInterceptTouchEvent(event);
}

– 寻呼机指的是ViewPager类.有了这个,ViewPager将正确检测滑动并相应地移动页面,但它不允许GridView接受任何事件,因此我无法点击这些项目.

我希望能够正确检测ViewPager中的滑动和GridView上的项目点击.

解决方法

我在colig的实现方面遇到了麻烦,但我能够通过继承ViewPager并覆盖onInterceptTouchEvent()方法来实现它.我只检查了X方向的滑动,以便在必要时进行垂直滚动.
private static final int minSwipeDistance = 30;
private float mTouchX;

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    boolean response = super.onInterceptTouchEvent(event);
    float x = event.getX();
    switch (event.getActionMasked()) {
    case MotionEvent.ACTION_DOWN:
        mTouchX = x;
        break;
    case MotionEvent.ACTION_MOVE:
        float dX = Math.abs(x - mTouchX);
        if (dX > minSwipeDistance)
            return true;
        break;
    }
    return response;
}

猜你在找的Android相关文章