brunch

You can make anything
by writing

C.S.Lewis

by 오준석 Feb 09. 2018

구글맵을 둘러싼 뷰그룹에서의 클릭 처리

아주 아주 간단한 수정사항을 몇 시간 동안 했던 이야기


수정사항은 간단했다.

지도 하단부만 클릭이 되는 불편한 UI를 지도 전체를 클릭 영역으로 바꾸면 된다.

지도는 구글의 SupportMapFragment 이고 이를 RelativeLayout이 감싸고 있다. 

하단에는 별도의 뷰그룹이 있다.


하단의 '클릭 후 검색 또는 길게 누르세용'만 클릭되던 걸 지도를 클릭해도 되도록 하는 것이다.


참고로 이 화면의 지도는 아무러 제스쳐를 받지 않도록 막아 놨고 이것을 클릭하면 꽉 찬 지도로 이동한다.




















RelativeLayout에 클릭 리스너 연결

지도를 둘러싸고 있는 RelativeLayout에 클릭 리스너를 연결해도 반응이 없다.

1시간 가량 삽질 한 것 같다.


해결 방법

일단 SupportMapFragment가 초기화 되면서 GoogleMap 객체를 받는데 여기에 setOnMapClickListener 를 확인하면 여기서 클릭을 먹고 있다. 이 리스너는 반환 타입이 void 라서 이벤트를 흘려 보낼 수가 없다.

그래서 맵을 감싸는 뷰그룹의 setOnClickListener 까지 이벤트가 오지 않는 것이다.

그래서 인터페이스로 콜백을 만들던 Consumer로 하던 외부로 클릭에 대한 처리를 넘겨주고 처리하면 된다.


결론

작업시간은 항상 여유있게 생각해야 한다.

5분 걸릴 일이 1시간이 될 수 있다.

하루면 될 것 같은 일도 1주일 간다.

매거진의 이전글 Android Studio 강제 종료 후 빌드 안 됨
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari