본문 바로가기
기타 개발 관련/안드로이드 개념 정리

안드로이드 - framelayout의 곂친 레이아웃에서 이벤트 클릭 중복 막기

by 번데기 개발자 2019. 8. 20.
반응형

 

안드로이드상에서 framelayout에 여러 컨텐츠를 넣고 배치할때 가끔 button 또는 layout 클릭이벤트가 중복되어 (즉 상위 컨테이너 이벤트가 하위 컨테이너로 전달되는 경우) 엄청 곤란할 때가 많습니다.

 

저는 실제로 다이어리 예제 앱을 만들다가 이런 경우가 발생했었는데요.. ㅠ

 

 

 

파란부분에서 캐러셀뷰 이미지 뷰 클릭이벤트를 구현하였고 이 이벤트가 왼쪽 상단 노란부분의 뒤로가기 버튼과 곂치는 일이 발생하였습니다.

 

 

 

그결과 왼쪽 상단 뒤로가기 버튼을 클릭했을 때에도 사진 업로드 팝업이 뜨게 되는 일이 발생하게 되었습니다.

 

이에 대한 해결법은 매우 간단합니다.

 

// 상단의 TopMenu가 클릭될때 뒤쪽의 캐러셀도 같이 터치되는 동작을 막기위한 코드
RelativeLayout rlTopMenu;
rlTopMenu = v.findViewById(R.id.rl_top_menu);
rlTopMenu.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent e) {
        return true;
    }
});

 

위와 같이 상단 네비게이션에 onTouchEventListener 이벤트를 설정하고 터치 이벤트가 하위 컨테이너로 전달되지 않도록 막아주면 끝입니다. ^^

 

true일 경우 이벤트를 없애고 하위 레이아웃들에게 이벤트를 전달하지 않는다는 의미라고 합니다.

 

감사합니다 :)

 

 

 

 

 

 

 

참고 : 

 

https://fimtrus.tistory.com/entry/Android-%ED%81%B4%EB%A6%AD-%EC%9D%B4%EB%B2%A4%ED%8A%B8%EB%A5%BC-%EB%92%A4%EC%97%90-%EB%B0%B0%EC%B9%98%EB%90%9C-%EB%A0%88%EC%9D%B4%EC%95%84%EC%9B%83%EC%97%90-%EC%A0%84%EB%8B%AC%EB%90%98%EC%A7%80-%EC%95%8A%EA%B2%8C-%ED%95%98%EA%B8%B0 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형