1. ホーム
  2. android

[解決済み] ダイアログの外側をクリックしてダイアログを閉じるには?

2022-04-23 07:56:42

質問

私のアプリケーションにカスタムダイアログを実装しています。ユーザーがダイアログの外側をクリックすると、ダイアログが閉じるように実装したいのですが、可能でしょうか? そのためにはどうすればよいのでしょうか?

どのように解決するのですか?

を使用することができます。 dialog.setCanceledOnTouchOutside(true); これは、ダイアログの外をタッチするとダイアログを閉じるものです。

のようなものです。

  Dialog dialog = new Dialog(context)
  dialog.setCanceledOnTouchOutside(true);

あるいは、ダイアログが非モデルである場合。

1 - フラグを設定する FLAG_NOT_TOUCH_MODAL をダイアログのウィンドウ属性に設定します。

Window window = this.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);

2 - Windowsのプロパティに別のフラグを追加します。 FLAG_WATCH_OUTSIDE_TOUCH - これは、ダイアログがその可視領域の外側でタッチイベントを受信するためのものです。

3 - オーバーライド onTouchEvent() ダイアログのアクションタイプをチェックし、もしアクションタイプが ' MotionEvent.ACTION_OUTSIDE は、ユーザがダイアログ領域の外側で操作していることを意味します。この場合、ダイアログを閉じるか、何を実行したいかを決めてください。 プレーンプリントを表示しますか?

public boolean onTouchEvent(MotionEvent event)  
{  

       if(event.getAction() == MotionEvent.ACTION_OUTSIDE){  
        System.out.println("TOuch outside the dialog ******************** ");  
               this.dismiss();  
       }  
       return false;  
}  

詳細はこちらをご覧ください。 タッチポイントに応じたカスタムダイアログを解除するには? そして 非モーダルダイアログをダイアログ領域外でタッチされたときに終了させる方法