小编典典

如何通过单击对话框外部来关闭对话框?

all

我已经为我的应用程序实现了一个自定义对话框。我想实现当用户在对话框外单击时,对话框将被关闭。我该怎么做?


阅读 72

收藏
2022-08-24

共1个答案

小编典典

如果您在对话框之外触摸,您可以使用dialog.setCanceledOnTouchOutside(true);which 将关闭对话框。

就像是,

  Dialog dialog = new Dialog(context)
  dialog.setCanceledOnTouchOutside(true);

或者,如果您的 Dialog 在非模型中,那么,

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”,则表示用户正在对话区域之外进行交互。因此,在这种情况下,您可以关闭对话或决定要执行的操作。查看普通版?

public boolean onTouchEvent(MotionEvent event)  
{

       if(event.getAction() == MotionEvent.ACTION_OUTSIDE){  
        System.out.println("TOuch outside the dialog ******************** ");  
               this.dismiss();  
       }  
       return false;  
}

有关更多信息,请查看如何根据接触点关闭自定义对话框?以及
在对话框区域外触摸时如何关闭非模态对话框

2022-08-24