如何通过点击对话框外的对话框来关闭对话框? [英] How to dismiss the dialog with click on outside of the dialog?
问题描述
我已经为我的应用程序实现了一个自定义对话框。我想实现,当用户在对话框外单击时,对话框将被忽略。
我需要做什么?
I have implemented a custom dialog for my application. I want to implement that when the user clicks outside the dialog, the dialog will be dismissed. What do I have to do for this?
推荐答案
您可以使用 dialog.setCanceledOnTouchOutside (true);
如果您触摸到对话框外面将关闭该对话框。
You can use dialog.setCanceledOnTouchOutside(true);
which will close the dialog if you touch outside of the dialog.
像
Dialog dialog = new Dialog(context)
dialog.setCanceledOnTouchOutside(true);
或者如果您的对话框非模型,
Or if your Dialog in non-model then,
1 - 为对话框的窗口属性设置标志 - FLAG_NOT_TOUCH_MODAL
1 - Set the flag-FLAG_NOT_TOUCH_MODAL
for your dialog's window attribute
Window window = this.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
2 - 向Windows属性添加另一个标志, FLAG_WATCH_OUTSIDE_TOUCH
- 这是一个对话框,可以在其可见区域之外接收触摸事件。
2 - Add another flag to windows properties,, FLAG_WATCH_OUTSIDE_TOUCH
- this one is for dialog to receive touch event outside its visible region.
3 - 覆盖 onTouchEvent()
对话框,并检查动作类型。如果动作类型为
' MotionEvent.ACTION_OUTSIDE
'表示用户正在对话区域外进行交互。因此,在这种情况下,您可以调整对话框或决定要执行的操作。
查看plainprint?
3 - Override onTouchEvent()
of dialog and check for action type. if the action type is
'MotionEvent.ACTION_OUTSIDE
' means, user is interacting outside the dialog region. So in this case, you can dimiss your dialog or decide what you wanted to perform.
view plainprint?
public boolean onTouchEvent(MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_OUTSIDE){
System.out.println("TOuch outside the dialog ******************** ");
this.dismiss();
}
return false;
}
有关更多信息,请参阅如何根据接触点关闭自定义对话框和
如何解除您的非模态对话框,触摸对话区域外面时
For more info look at How to dismiss a custom dialog based on touch points? and How to dismiss your non-modal dialog, when touched outside dialog region
这篇关于如何通过点击对话框外的对话框来关闭对话框?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!