안드로이드 개발 질문/답변
(글 수 45,052)
제목 그대로에요..
RelativeLayout 을 사용해서 A 뷰를 B 뷰로 덮어버린 상황인데..
위로 올라와 있는 B뷰를 터치하는데 가려진 A뷰에도 터치 이벤트가 동작해버리네요..
제 생각으로는 당연히 가려진 뷰는 동작하지 않을거라고 생각했는데..
이거 막을 방법 없을까요?
2012.11.05 09:32:14
터치돼지 말아야 하는 뷰를
뷰.setVisibility(View.GONE);
으로 날려버리시면 되죵;;
써야 할때는
setVisibility(View.VISIBLE);
살려보심이..
만약 걍 보이는 영역은 필요한데 클릭만 막으셔야 하는 상황이 되시면..
플래그를 걸어서 처리를 안하게 하셔야 될듯하네요.. 그게 많다면
처음 뷰 설계를 고치심이.. ㅠㅠ;; 이게 저의 한계..
2012.11.05 10:35:42
B뷰에서 터치기능이 동작 하지 않는 뷰라서 하위뷰로 터치 이벤트가 넘어가는것 같습니다.
B뷰에서 터치 이벤트가 적용되는지요...
B뷰가 레이어나, 일반 TextView, View, ImageView처럼 이벤트를 처리하지 않는 뷰가 상위로 올경우
하위뷰로 이벤트가 전달됩니다.
이걸 막는 박법은
상위 뷰에서 이벤트를 처리를 해주시면 될거 같습니다.
아니면 하위뷰를 setVisibility(View.GONE)를 줘서 하위뷰를 숨겨버리셔도 될거 같습니다.
기타 다른 방법도 많습니다....
강제로 B뷰에 setOnClickListener를 등록하는방법
onTouchEvent를 오버라이드해서 return true주는 방법등등....




터치돼지 말아야하는 뷰의 옵션 clickable을 false로 해주세요.