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

slidingdrawer button event가 겹칩니다.

0 추천

슬라이딩을 열고, 기존 밖에 있는 버튼 영역을 누르면 그 버튼까지

인식해버리네요, 이틀동안 문제를 해결하려고 인터넷을 뒤졌는데,

해결하지 못해서 질문드립니다. 초보 개발자 입니다..

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SlidingDrawer drawer = (SlidingDrawer) findViewById(R.id.slidingDrawer);
        Button Button1= (Button) findViewById(R.id.Button1);
        Button innerbtn= (Button) findViewById(R.id.innerbtn);

        Button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "밖 버튼", Toast.LENGTH_SHORT).show();
            }
        });

        innerbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "안 버튼", Toast.LENGTH_SHORT).show();
            }
        });
    }
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<RelativeLayout
    android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#cc000000"
    >
    <Button
        android:id="@+id/Button1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:text="밖 버튼" />
    </RelativeLayout >

    <SlidingDrawer
        android:id="@+id/slidingDrawer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_horizontal"
        android:handle="@+id/handle"
        android:content="@+id/content"
        android:rotation="180"
        >
        <LinearLayout
            android:orientation="horizontal"
            android:id="@+id/handle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#cc000000">

            <TextView
                android:id="@id/handle"
                android:layout_width="wrap_content"
                android:layout_height="900dp"
                android:text="핸  들"
                android:rotation="180"
                android:background="#00000000"/>
        </LinearLayout>

        <RelativeLayout
            android:orientation="horizontal"
            android:id="@+id/content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#C0C0C0"
            >
            <Button
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text=" - Button - "
                android:id="@+id/innerbtn"
                android:onClick="SortClickHandler"
                android:rotation="180"/>
        </RelativeLayout>
    </SlidingDrawer>
</RelativeLayout>

 

초보개발자학생 님이 2015년 7월 21일 질문

2개의 답변

0 추천
 
채택된 답변
밖에 있는 영역이라함은 드로어 안에 빈곳을 의미하는것인가요?

그게 맞다면 빈곳을 View로 선언하고 선언한 뷰에 클릭리스너를 주면 됩니다.

뷰는 당연히 투명이나 드로어 백그라운드 색깔로 줘야겟죠.

그리고 뷰 클릭시엔 아무일 안하면 되고요.
컵받침 (5,500 포인트) 님이 2015년 7월 21일 답변
답변 감사합니다~
밖에있는 영역은 드로어 열기전의 화면(기본화면) 입니다.
기본화면에 있는 버튼(버튼A)은 이미 다른 클릭리스너를 선언해주었구요,
드로어를 열고, A버튼이 있는 자리를 클릭했을 경우 A클릭리스너가 작동하네요.
드로어를 열었을 경우, A버튼이 작동 안되게 하는게 제 질문의 요지입니다.
제가 이해한것이 맞네요. 드로어 열고 드로어의 빈곳을 클릭시에 드로어 아래에 깔린 화면의 버튼이 클릭된다는 거라면 답변처럼 드로어의 빈곳을 view로 만들어 클릭리스너 달아주심 됩니다
답변 감사합니다.
xml중, 드로어 쪽에 뷰 추가하고, onClick으로 의미 없는 것으로 연결해주니, 해결됐네요. 꿉꿉하던 하루였는데, 시원하네요 감사합니다
0 추천
댓글까지 읽어보니..기존 드로어가 열리기전에 있던 버튼이 드로어로 가려져있는데도 그영역을 누르면 클릭이벤트가 발생한다는것 같은데요... 그럼 그냥 버튼이 가려졌을땐 Clickable값을 False를 주는건 어떨까 하네요...ㅎㅎ
blackjinsh (470 포인트) 님이 2015년 7월 21일 답변
답변 감사합니다!
드로어를 열었을 경우 boolean을 바꿔주고, 기존의 버튼이 작동 안되게 해봤는데, 어플 시작하고, 20초 정도의 쿨타임이 지나고 적용이 되더군요 ㅠㅜ
...