如何在对话框外发生单击时触发事件

fiz*_*o07 36 android android-dialog

我想知道如何解决我遇到的问题.

我有一个在活动中弹出的Dialog.对话框不会覆盖整个屏幕,因此活动中的按钮仍会显示.当对话框的边界外有触摸时,我可以轻松关闭对话框dialog.setCanceledOnTouchOutside(true);

但是,如果点击在Dialog的边界之外,我想要做的就是触发一个事件(例如,如果有人触摸主Activity上的按钮,它应该关闭Dialog并同时触发该事件).

Wil*_*han 58

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.
            }
        }
);
Run Code Online (Sandbox Code Playgroud)

onCancel()方法内键入代码,以便在取消对话框时运行.


Sam*_*iya 40

这个对我有用,,

        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();
Run Code Online (Sandbox Code Playgroud)

请参阅此 http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_NOT_TOUCH_MODAL