Вы можете использовать dialog.setCanceledOnTouchOutside(true);
, который закроет диалоговое окно, если вы нажмете за пределами диалогового окна.
Что-то вроде,
Dialog dialog = new Dialog(context)
dialog.setCanceledOnTouchOutside(true);
Или если ваш диалог не в модели, тогда,
1 - установить флаг- FLAG_NOT_TOUCH_MODAL
для атрибута окна вашего диалогового окна
Window window = this.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
2 - добавить еще один флаг в свойства Windows, * FLAG_WATCH_OUTSIDE_TOUCH
- этот флажок предназначен для получения диалоговым окномсобытие касания за пределами видимой области.
3 - переопределить onTouchEvent()
диалогового окна и проверить тип действия.если тип действия 'MotionEvent.ACTION_OUTSIDE
' означает, что пользователь взаимодействует за пределами области диалога.Таким образом, в этом случае вы можете уменьшить свой диалог или решить, что вы хотите выполнить.view plainprint?
public boolean onTouchEvent(MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_OUTSIDE){
System.out.println("TOuch outside the dialog ******************** ");
this.dismiss();
}
return false;
}
Для получения дополнительной информации смотрите Как закрыть пользовательский диалог на основе точек касания? и Как закрыть немодальный диалог при прикосновении снаружиобласть диалога