点击外部安卓对话框以关闭它?
2022-09-01 03:23:24
我想知道是否有可能以某种方式点击弹出对话框(或具有对话框主题的活动),然后通过点击外部来关闭它?
我做了一个快速的图片来说明它:
通常,您必须按后退键才能关闭对话框,但是在Honeycomb上,由于所有屏幕空间,可以选择在对话框外部点击可能会很棒。
我想知道是否有可能以某种方式点击弹出对话框(或具有对话框主题的活动),然后通过点击外部来关闭它?
我做了一个快速的图片来说明它:
通常,您必须按后退键才能关闭对话框,但是在Honeycomb上,由于所有屏幕空间,可以选择在对话框外部点击可能会很棒。
dialog.setCanceledOnTouchOutside(true)
设置在窗口边界外触摸此对话框时是否取消此对话框。
我的应用是使用 Theme.Holo.Dialog 的单个活动。在我的情况下,另一个答案不起作用。它只使其他后台应用程序或启动屏幕接收触摸事件。
我发现使用dispatchTouchEvent在我的情况下工作。我认为这也是一个更简单的解决方案。下面是一些示例代码,说明如何使用它来检测具有对话框主题的活动外部的点击:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
Rect dialogBounds = new Rect();
getWindow().getDecorView().getHitRect(dialogBounds);
if (!dialogBounds.contains((int) ev.getX(), (int) ev.getY())) {
// Tapped outside so we finish the activity
this.finish();
}
return super.dispatchTouchEvent(ev);
}