18个解决方案
327 votes
要防止对话框在按下后退键时被解除,请使用此选项
dialog.setCancelable(false);
并且为防止对话框在外部触摸时被解雇,请使用此功能
dialog.setCanceledOnTouchOutside(false);
Singhak answered 2019-03-28T22:08:28Z
108 votes
你实际拥有的是一个Activity(即使它看起来像一个Dialog),因此如果你想在单击后台活动时保持它打开,你应该从你的活动中调用setFinishOnTouchOutside(false)。
编辑:这仅适用于Android API等级11或更高版本
artex answered 2019-03-28T22:08:59Z
39 votes
对我有用的是创建DialogFragment设置它不可取消:
dialog.setCancelable(false);
Petr answered 2019-03-28T22:09:23Z
31 votes
这可以帮到你。 这是一种处理外部触摸事件的方法:
如何在窗外触摸时取消以Activity为主题的对话框?
通过捕捉事件并无所事事,我认为你可以阻止关闭。 但奇怪的是,当您触摸外部时,活动对话框的默认行为应该不会自行关闭。
(PS:代码使用WindowManager.LayoutParams)
Michel-F. Portzert answered 2019-03-28T22:07:57Z
17 votes
对于更高的API 10