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

뷰 터치 순서 질문드립니다.

0 추천

저는 @+id/controlBtn 을 Activity에서 클릭 이벤트를 받으려고 합니다.

 

layout.xml에서 controlBtn을 제일 위에 두면, 클릭 처리가 된느데

 

제일 아래에 놓으면 클릭 처리가 제대로 안됩니다 ㅠ-ㅠ...

 

아래와같이 하면 클릭 처리가 되고,

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/controlBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="150dp"
        android:clickable="true"
        android:scaleType="center"
        android:src="@drawable/trimming_bg_focus_left" />

    <ImageView
        android:id="@+id/blueImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="center"
        android:src="@drawable/voice_recorder_player_edit_bg_h" />

    <ImageView
        android:id="@+id/grayImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/controlBtn"
        android:scaleType="fitXY"
        android:src="@drawable/blue_bitmap" />

</RelativeLayout>

 

아래와같이하면 클릭처리가 되지 않습니다...

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/blueImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="center"
        android:src="@drawable/voice_recorder_player_edit_bg_h" />

    <ImageView
        android:id="@+id/grayImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/controlBtn"
        android:scaleType="fitXY"
        android:src="@drawable/blue_bitmap" />

    <ImageView
        android:id="@+id/controlBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="150dp"
        android:clickable="true"
        android:scaleType="center"
        android:src="@drawable/trimming_bg_focus_left" />

</RelativeLayout>

 

 

세개의 이미지가 모두 겹쳐 보이지만, controlBtn의 이미지가 제일 위에 나와서

 

그것을 눌렀을 때 클릭 처리를 해야하는데 난감합니다...

 

도움 부탁드립니다..

 

감사합니다!

apcnic (1,420 포인트) 님이 2013년 5월 6일 질문
apcnic님이 2013년 5월 6일 수정

5개의 답변

0 추천
음.. 혹시. 이미지 사이즈들이. 다 동일한가요???

동일한 이미지라면 아니면 많은 차이 없는 이미지라면.

레이아웃을 하나 만들고 거기에.. 3개의 이미지를 겹쳐 놓고.

레이아웃 클릭하는 방식으로 진행하셔도 될듯 한데..

의도에 따라서 틀리기도 하니..
DarkTH (620 포인트) 님이 2013년 5월 6일 답변
이미지 크기들이 다 다릅니다.
세개 이미지를 저렇게 꼭 겹쳐야하는데
어떻게 해야할지 난감합니다 ㅠ-ㅠ..
0 추천

일단 속성값부터 잘못된부분이 있군요

@+id/ 는 아이디를 추가한다는거구요 아이디를 사용하실땐 @id/ 로 사용하여야합니다.

그리고 먼저 @+id/로 생성되지않은 부분을 @id/로 가져와서 사용하는것도 불가능하죠

RelativeLayout는 상대적인위치에 레이아웃을 배치하므로 

두번째 올려주신코드중 @+id/를 @id로 수정하고 grayImage와 controlBtn의 순서만 바꿔주면

원하시는 결과를 얻으실수있을것 같습니다.

얼룩돼지 (15,720 포인트) 님이 2013년 5월 6일 답변
순서를 바꾸면, controlBtn 이미지가 grayImage 이미지에 가리게 되어서요..
controlBtn 이미지가 위에 보이게 하고 싶습니다..ㅠ-ㅠ
글만가지고는 원하는 배치가 어떤것인지 가늠하기 힘드네요.
원하시는 배치를 그림으로 그려주시면 해결이 쉬울텐데요.
0 추천
음.. 제가 이해가 좀 부족해서..

ControlBtn같은 경우...

겹쳐질수 있나요??

 gray가 젤 큰 이미지가 되는건가?

소스 보면.. BlueImage의 오른쪽에 붙였고. grayImage의 경우 ControlBtn이랑 아래를 맞췄는데..

grayImage는 BlueImage와 겹쳐질수는 있는것 같은데.. ControlBtn은 겹쳐지지는 않지 않나요??

 음.. 이미지 사이즈가 문제인가?
DarkTH (620 포인트) 님이 2013년 5월 6일 답변
toRightOf 속성을 지웠어야 했네요...
하도 안되서 오른쪽에 놓고 클릭해본...ㅠ-ㅠ
지금 지워서 다시 올리겠습니다..
죄송합니다..
0 추천
일단 뭐.. 소스와 상관없이 되지 않을것 같네요..

첫번째 소스 같은경우 위에 다른 컨트롤이 덮고 있는 상황일것 같은데..

그럴경우는 받지 못할것 같네요.

음..

부모 자식간의 관계도 이니고

동일한 위치에서 보이지 않는 컨트롤에 이벤트가 발생할 방법은 없어 보입니다.

 

딱 버튼 영역만 클릭이 되어야 되는것 같은데.. 좀 힘들것 같은 생각이 드네요.

 

저것만 아니면 어떻게 해결할수는 있을것 같은데..

 

죄송하네요.
DarkTH (620 포인트) 님이 2013년 5월 6일 답변
0 추천
레이아웃 제일 위에 클릭 처리를 위한 투명버튼..
노예의집 (23,370 포인트) 님이 2013년 5월 7일 답변
...