마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

레이아웃 클릭 이벤트 간단한 질문입니다.^^

0 추천

안녕하세요. 레이아웃 클릭 이벤트 관련해서 질문이있습니다.^^

위 그림을 보시면

왼쪽은 클릭전, 오른쪽은 클릭 후입니다.

보통 하나의 버튼에 셀렉터를 넣어서 기본상태와 state_pressed상태의 이미지를 바꿀 수 있는 것으로 알고 있습니다.

이것은 하나의 이미지 버튼을 사용할 때 가능 한 것으로 알고 있는데요.

왼쪽 그림 보시면 검은색이 RelativeLayout이고 안에 빨간색이 ImageView입니다.

문제는 버튼이 눌렸을 때  RelativeLayout도 빤짝여야하고 ImageView도 빤짝여야한다는 것입니다.(눌렸을 때 둘다 이미

지가 변경되어야합니다.)

RelativeLayout을 onClick을 사용하면 RelativeLayout의 셀렉터로 연결해 놓은 부분만 변경되어 안에 이미지 뷰가 변경되지 않습니다.

onTouch리스너를 사용해서 아래와 같이 하면 이미지가 둘다 변경이 되긴하는데 

if(event.getAction() == MotionEvent.ACTION_DOWN){
RelativeLayout_myword_delete.setBackgroundResource(R.drawable.btn_a_over);
myword_delete.setBackgroundResource(R.drawable.img_a_over);
}
}else if(event.getAction() == MotionEvent.ACTION_UP){
RelativeLayout_myword_delete.setBackgroundResource(R.drawable.btn_a);
myword_delete.setBackgroundResource(R.drawable.img_a);
}
 
문제는 일반적인 ImageButton 또는 ImageView는 그 버튼을 누른 상태에서 그 버튼을 벗어나 다른 객체?로 이동하게 되면 누른 상태가 해제가 되서 over이미지가 아닌 처음 이미지로 변경되는데 onTouch에서는 누른 상태에서 현재 버튼이 아닌 다른 곳으로 이동되도 이미지가 눌린 상태로 있습니다. 즉 다른 곳으로 이동하면 버튼이 눌리지 않은 상태로 가야하는데 말이죠.. 동작 취소인거죠.. onTouch에서 이것 저것 다해봤는데 안되네요.ㅠㅠㅠ
 
조언을 부탁드립니다.^^
익명사용자 님이 2014년 7월 31일 질문

2개의 답변

0 추천
 
채택된 답변
이미지뷰에 android:duplicateParentState="true" 속성을 주면

부모인 RelativeLayout의 상태를 그대로 받게 됩니다.

부모 뷰가 press 되면 자식 뷰도 press 되고

부모 뷰가 checked 되면 자식 뷰도 checked 됩니다.
원조안드로이드 (58,190 포인트) 님이 2014년 7월 31일 답변
윽..민망하네요^^;; 이런 정보가.ㅠㅠㅠ 대단히 감사합니다.. 몇시간 고생한게...해결되었네요^^:;;원조가 괜히 원조가 아니네요!! 감사합니다^^
0 추천
duplicateParentState
익명사용자 님이 2014년 7월 31일 답변
...