뷰 스와이프 영역 겹침 문제

Android 2017. 4. 28. 05:31

적절한 제목인지는 잘 모르겠습니다


ViewPager 내부에 네이버 맵 프래그먼트가 속해있는 구조에서

네이버 맵 영역에서 좌우로 패닝(손가락을 때지 않고 움직임)시에

동작이 네이버 맵에 전달되지 않고 ViewPager에 의해 가로채어져 좌우로 페이지가 넘어가는 문제가 있었습니다


이렇게 동작 영역이 겹칠때에는 어느 한쪽은 마땅히 포기해야하는것이 자연스럽겠죠?

웹서칭을 해보았으나 대부분 ViewPager 클래스를 상속 받아서 기능을 무력화 시키는 코드가 많이 보였습니다

단지 이것을 위해 상속 받아야 한다면 파리를 잡기 위해 대포를 쏘는 격 같은데요


터치 이벤트 관련해서 여러 자료를 읽은 후에 다음과 같이 해결할 수 있었습니다


1
2
3
4
5
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        viewPager.requestDisallowInterceptTouchEvent(true);
        return super.dispatchTouchEvent(ev);
    }
cs

모든 이벤트는 화면을 가득 채우는 Activity로 부터 시작합니다
VIewGroup의 포함관계에 따라 이벤트가 전달되는데
최상위에 존재하는 Activity의 despatchTouchEvent 메서드를 오버라이드해서 ViewPager에서 이벤트를 인터럽트 하지 못하도록 하는 메서드를 호출합니다

OOP 원리에 어긋나는것 같지만 상속하지 않고 문제를 해결 했습니다.


'Android' 카테고리의 다른 글

날짜 정규화  (0) 2017.05.02
GPS 설정 액티비티 호출  (0) 2017.04.28

설정

트랙백

댓글