在ViewPager中添加onClickListener使滑动不顺利Android

时间:2014-04-02 08:43:25

标签: android android-viewpager

当我将此代码添加到我的ViewPager中时,ViewPager的滑动在垂直滚动视图内是平滑的。

mPager.setOnTouchListener(new View.OnTouchListener() {
    @Override
        public boolean onTouch(View v, MotionEvent event) {
        v.getParent().requestDisallowInterceptTouchEvent(true);
        return false;
    }
});

但是当我将onClickListener添加到我的ImageView [在添加到Viewpager的适配器的片段中找到]时,我的ViewPager的滑动不正确。不正确的地方我需要一个STRAIGHT HORIZONTAL LINE滑动它去另一个页面不像之前[当我没有添加onClickListener]时,viewpager进入下一页甚至我做DIAGONAL刷卡。任何帮助深表感谢。感谢。

2 个答案:

答案 0 :(得分:1)

我刚刚将setontouchlistener用于我的imageview并在那里设置条件。

以下是代码:

imgCarousel.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN: {
        pStart = new Point((int) event.getX(), (int) event.getY());
        break;
    }

    case MotionEvent.ACTION_UP: {               
        break;
    }

    case MotionEvent.ACTION_MOVE:{
        break;
    }

    case MotionEvent.ACTION_CANCEL:{
        Point pCancel = new Point((int) event.getX(), (int) event.getY());

        int difference = pStart.x - pCancel.x;
        if(difference > 10){
            mPager.setCurrentItem(HomeCarousel.currentPage+1);              
        }
    }

    default:
        break;
    }
    return true;
}
});

答案 1 :(得分:0)

我认为,这是因为ImageView使用onClickListener拦截了touchEvent。 您可以将GestureOverlayView与ImageView一起使用 - http://developer.android.com/reference/android/gesture/GestureOverlayView.html

它可以处理触摸事件而不会拦截它们。