2011年12月16日金曜日

【Android】ダイアログで画面外を触った場合に閉じる

ダイアログは2種類ある。

通常の Dialog を継承しているもの。
Activityにtheme (@android:style/Theme.Dialog など) を設定してDialog風にしているもの。

指定の方法がそれぞれ違う。



1. 通常の Dialog を継承しているもの。
  1. final AlertDialog dialog = alertinformation.create();  
  2. dialog.setCanceledOnTouchOutside(true);  

Dialog に対して、setCanceledOnTouchOutside を設定してやるといい。

2. Activityにtheme (@android:style/Theme.Dialog など) を設定してDialog風にしているもの。
  1. // ウィンドウ外を触った場合、閉じる  
  2. @Override  
  3. public boolean dispatchTouchEvent(MotionEvent ev) {  
  4.     Rect dialogBounds = new Rect();  
  5.     getWindow().getDecorView().getHitRect(dialogBounds);  
  6.   
  7.     if (!dialogBounds.contains((int) ev.getX(), (int) ev.getY())) {  
  8.         this.finish();  
  9.     }  
  10.     return super.dispatchTouchEvent(ev);  
  11. }  

イベントで画面外をタッチしている場合に画面を終了する。

0 件のコメント:

コメントを投稿