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

조회수 4091회

제 앱에 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;
        }
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)