0

我正在一个项目中工作,当用户选择图像时,它会打开一个带有图像的对话框。现在由于要求我必须在对话框外部触摸时关闭对话框,所以我设置了dialog.setCanceledOnTouchOutside(true). 但是另一个要求是,一旦用户触摸到对话框的一侧,我就应该更改页面,所以我试图找出如何做到这一点。但我都试过了onCancelListeneronDismissListener。当我们使用它们时,它们都不会被调用dialog.setCanceledOnTouchOutside(true)。取消对话框。

4

2 回答 2

3

如果您使用的是DialogFragment类,只需覆盖其onCancel()方法:

@Override public void onCancel(DialogInterface dialog) {
    super.onCancel(dialog);

    ...
}
于 2013-04-25T08:41:39.433 回答
0

据我了解,您无法使用 setCanceledOnTouchOutside 添加额外的处理作为替代方案,您可以使用 MotionEvent.ACTION_OUTSIDE 覆盖您的 onTouchEvent 以在他们触摸框外时执行操作,就像这样

public boolean onTouchEvent(MotionEvent event)  
{  

   if(event.getAction() == MotionEvent.ACTION_OUTSIDE){  
           doStuff(); 
           this.dismiss();  
   }  
   return false;  
}  
于 2013-02-26T15:56:42.480 回答