[解決済み] ダイアログの外側をクリックしてダイアログを閉じるには?
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;
}
詳細はこちらをご覧ください。 タッチポイントに応じたカスタムダイアログを解除するには? そして 非モーダルダイアログをダイアログ領域外でタッチされたときに終了させる方法
関連
-
[解決済み】このアクティビティでは、Theme.AppCompatテーマ(またはその子孫)を使用する必要があります。
-
aapt2エラー:ログを確認する(具体的な原因の探り方)
-
Error:A problem occurred configuring project ':app'. > ビルドを見つけられませんでした。
-
プロセス 'command 'F:\sdkbuild-tools', 26.0.2 AAAPT.exe' finished with non-zero exit value 1
-
AndroidStudioのショートカット 検索/置換
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] アプリケーションを終了することは嫌われますか?
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
-
[解決済み] Ok "と "Cancel "オプションのあるダイアログを作成する方法
-
[解決済み】プログレスダイアログとバックグラウンドスレッドがアクティブなときに、画面の向きが変わるのをどう処理するか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
adb シェルがデバイスのオフラインを求めるプロンプトを表示する
-
java.lang.NullPointerException: NULLオブジェクト参照で仮想メソッド......を呼び出そうとしました。
-
Android.mk:7: *** セパレータがありません。
-
android:EMSのプロパティ
-
アンドロイドスタジオのエラーを解決する --> Error:(1, 0) id 'com.android.application' を持つプラグインが見つかりません。
-
Error:A problem occurred configuring project ':app'. > ビルドを見つけられませんでした。
-
GoogleMapと連携し、位置情報の取得が可能
-
Android Get set image.setImageResource(R.drawable.xxx) リソース
-
Android基本アプレット
-
アンドロイドにおけるトークンの利用