본문 바로가기

Programming/Android

[Android] 클릭 이벤트를 뒤에 배치된 레이아웃에 전달되지 않게 하기

느낌은 아는데 제목을 정하기가 쉽지 않군요.


레이아웃을 작업할 때 뒤에 배치된 버튼이나 레이아웃에 대한 클릭이벤트를 무시하고 싶을 때가 있습니다.


화면 전체를 덮는 레이아웃을 만들어서 하위에 있는 이벤트를 막는 경우도 있구요.


아래의 코드를 화면 전체를 덮는 최 상단 레이아웃에 적용 시키면, 하위에 있는 레이아웃에 클릭이벤트가 전달되지 않습니다.


 


mTopLayout.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return true;
    }
});


위의 코드에서  핵심은 return 값을 true 주는 것인데 Developer 에는 아래 와 같이 적혀 있습니다.


Returns
  • True if the listener has consumed the event, false otherwise.

해석해 보면 true로 설정할 경우 이벤트를 없애고(즉, 다음에 받을 차례인 리스너들에게 전달하지 않는다는 뜻입니다),  


false 인 경우 이벤트를 넘겨준다는 말이군요.


클릭이벤트 때문에 고생하시는 분들 위의 코드를 적용해보세요~