ViewPager에서 손가락으로 스와이핑 하는걸 못하게 하고싶어요.

제 앱에 ViewPager가 있고 거기에 버튼이 10개있는데요. 만약 버튼을 클릭하면 바로 mPager.setCurrentItem(3);으로 4번째 페이지로 가게하고싶어요. 근데 일단 손가락으로 페이지를 스와이핑하는걸 막고싶어요. 그냥 페이지에서는 버튼만 클릭되게하고싶은데 어떻게하면 좋을까요?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    일단 ViewPager의 하위 클래스가 필요합니다. onTouchEvent는 하위 뷰가 터치되는것을 막을 수 있고 onInterceptTouchEvent는 원하는대로 스와이핑이 안되게 막을수있습니다.

    import android.content.Context;
    import android.support.v4.view.ViewPager;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    
    public class NonSwipeableViewPager extends ViewPager {
    
        public NonSwipeableViewPager(Context context) {
            super(context);
        }
    
        public NonSwipeableViewPager(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        @Override
        public boolean onInterceptTouchEvent(MotionEvent event) {
            // 스와이핑되서 페이지가 바뀌는것을 막는다. 
            return false;
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            //스와이핑되서 페이가 바뀌는 것을 막는다. 
            return false;
        }
    }
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.