하루에 0.01%라도 성장하자

Develop/Android

최상단 레이아웃에서 발생하는 이벤트를 하위 레이아웃으로 전달 하는 것 막기!

뚠님 2019. 11. 13. 18:51
반응형

제목 정하기 정말 힘드네..이번건..;;

 

개발을 하다 보면 이렇게 최상단에 Fragment를 띄워야 하는 상황이 발생한다.

 

제일 쉬운방법은 역시 Dialog를 만들어 띄우는 것이지만...( 지금 생각해보면 걍 Dialog로 띄울껄.. ) 나는 Fragment로 구현하였다.

 

현재 배포 중인 어플

 

동작은 '확인' 버튼을 클릭하면 그냥 저 Fragment가 없어지면 되는 아주 간단한 구조.

 

저 영역은 조금 더 디테일하게 표현하면 아래 그림과 같다

 

현 어플의 View 구조

 

B라는 Activity위에 A라는 Fragment가 있는 건데, 배경이 검은색이어서 그렇지.. 지금 저 공지사항 Fragment는 전체 화면을 차지하고 있다.

 

공지사항 뒤에는 B Activity에 구현된 Button이 있는데 Fragment의 하얀 부분을 클릭해도 B Activity의 Button이 클릭된다는 이슈가 있었다.

 

이럴때 최상의 뷰에서 그 이하 뷰에 이벤트를 전달하지 않도록 막아주어야 하는데 그 방법은 아래와 같다.

 

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

layoutName은 A Fragment의 전체 layout의 id값을 넣어 주면 된다.

 

이 레아아웃에서 발생하는 이벤트를 하위로 보내지 않겠다는 설정(?)이다.

반대로 return false를 처리 하면 하위로 이벤트를 보내겠다는 의미로 해석된다.

 

 

반응형