我想知道如何解决我遇到的问题。如何在对话框外发生点击时触发事件
我有一个弹出对话框的活动。对话框没有覆盖整个屏幕,所以活动中的按钮仍然显示。当对话框边界之外有触摸时,我可以很容易地关闭对话框dialog.setCanceledOnTouchOutside(true);
但是,我想要做的是触发一个事件,如果点击超出了对话框的界限(例如,如果有人触摸了主Activity上的按钮,它应该关闭对话框并同时触发该事件)。
我想知道如何解决我遇到的问题。如何在对话框外发生点击时触发事件
我有一个弹出对话框的活动。对话框没有覆盖整个屏幕,所以活动中的按钮仍然显示。当对话框边界之外有触摸时,我可以很容易地关闭对话框dialog.setCanceledOnTouchOutside(true);
但是,我想要做的是触发一个事件,如果点击超出了对话框的界限(例如,如果有人触摸了主Activity上的按钮,它应该关闭对话框并同时触发该事件)。
工作对我来说,,
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();
谢谢萨米尔 - 它适用于我也 – fizo07 2012-03-01 14:06:40
当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()
方法里面的代码所以它在对话框被取消时运行。
最佳答案..后2年也指相同的答案...不能再upvote :) – 2017-05-03 19:17:02
覆盖Dialog.onCancel(...)的作品,但dialog.setOnCancelListener(。 ..)不适合我。 – user1269737 2017-07-06 19:18:58
正常的解决方案是使对话框模态。你为什么不想这样做? – 2012-03-01 12:33:58
谢谢。我试图在我的主要活动中显示一个webview(在对话框中),以保持应用程序的外观。 – fizo07 2012-03-01 15:32:31