您可以使用dialog.setCanceledOnTouchOutside(true);
,如果您在对话框外部touch ,它将关闭对话框.
比如,
Dialog dialog = new Dialog(context)
dialog.setCanceledOnTouchOutside(true);
或者如果你的对话框是非模型的,
1-为对话框的窗口属性设置flag-FLAG_NOT_TOUCH_MODAL
Window window = this.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
2-向窗口属性添加另一个标志,,FLAG_WATCH_OUTSIDE_TOUCH
-此标志用于对话框在其可见区域之外接收touch 事件.
3-覆盖对话框的onTouchEvent()
并判断动作类型.如果动作类型为
public boolean onTouchEvent(MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_OUTSIDE){
System.out.println("TOuch outside the dialog ******************** ");
this.dismiss();
}
return false;
}
欲了解更多信息,请查看How to dismiss a custom dialog based on touch points?和