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

다이얼로그 영역 밖 터치시 dismiss 방법

0 추천

커스텀 다이얼로그를 만들어 사용중입니다.

다이얼로그에는  에딧텍스트가 있어 다이얼로그를 띄우면 포커스가 에딧텍스트에들어가

키보드도 같이 뜨는 구조로 되어있습니다. 여기서 사용자가 다이얼로그영역밖을 선택하면

다이얼로그가 dismiss되도록 하고싶은데,, 맘처럼 안됩니다.

어제도 질문 올려 답변받아 해당 참고자료를 보고 해봤지만 dismiss가 되지않아 다시 질문드립니다.

.setCanceledOnTouchOutside(true);
.setCancelable(true);
 
설정하였고 어제 답변을 보고 아래와같은 코드들을 추가하였지만 다이얼로그영역 밖을 터치해도
전혀 반응이없습니다. 영역밖터치해도 ontouch호출도 안되더군요... 
 
Window window = this.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
 
@Override
public boolean onTouchEvent(MotionEvent event)  
{  
 
       if(event.getAction() == MotionEvent.ACTION_OUTSIDE){ 
               this.dismiss();  
       }  
       return false;  
}  

도와주세요.. 다이얼로그를 dismiss 하고 싶습니다. 

익명사용자 님이 2015년 3월 3일 질문

2개의 답변

0 추천
 
채택된 답변

FLAG_WATCH_OUTSIDE_TOUCH

http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_WATCH_OUTSIDE_TOUCH

으로 감별할 수 있습니다.

위의 Flag 추가하셔서 테스트 해보세요

Android에서 제공합니다.

빅클라인 (4,520 포인트) 님이 2015년 3월 3일 답변
빅클라인님이 2015년 3월 3일 수정
0 추천

다이얼로그를 엑티비티 형식으로 만들어 주시고 테마를 다이얼로그 방식으로 하는 방법이 어떨까 싶네요

뷰가 터치되면 엑티비티를 종료하는 방식으로...

<style name="Dialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
</style>
 
      <activity
            android:name=".CustomDialog"
            android:screenOrientation="portrait"
            android:theme="@style/Dialog" >
        </activity>

 

루틴 (2,360 포인트) 님이 2015년 3월 3일 답변
뉑....한번 액티비티로 바까보겠습니당
...