48

抱えている問題を解決する方法を知りたいです。

アクティビティでポップアップするダイアログがあります。ダイアログは画面全体をカバーしていないため、アクティビティのボタンは引き続き表示されます。ダイアログの境界外に触れたときにダイアログを簡単に閉じることができますdialog.setCanceledOnTouchOutside(true);

ただし、クリックがダイアログの境界外にある場合にイベントを発生させたい (たとえば、誰かがメインのアクティビティのボタンに触れた場合、ダイアログを閉じて同時にそのイベントを発生させる必要があります)。

4

8 に答える 8

76

dialog.setCanceledOnTouchOutside(true);次に、次のようにオーバーライドするだけですonCancel()

dialog.setOnCancelListener(
        new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                //When you touch outside of dialog bounds, 
                //the dialog gets canceled and this method executes.
            }
        }
);

onCancel()ダイアログがキャンセルされたときに実行されるように、メソッド内にコードを入力します。

于 2015-02-25T01:46:44.380 に答える
43

わたしにはできる、、

        Window window = dialog.getWindow();
        window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
        window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

        dialog.show();

これを参照してください http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_NOT_TOUCH_MODAL

于 2012-03-01T12:38:18.540 に答える