我已经为我的应用程序实现了一个自定义对话框.我想实现的是,当用户在对话框外单击时,对话框将被取消.

推荐答案

您可以使用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?

Android相关问答推荐

Android Kotlin DSL Gradle找不到自定义存储库中的依赖项

如何使用Gradle风味在两个Kotlin导入(Google vs Amazon Java billing library)之间进行 Select ?

图像在Android Studio中显示,但不在设备中显示

Google Play测试应用程序Crash-java.lang.NoSuchFieldError:没有Lkotlinx/coroutines/CoroutineExceptionHandler类型的字段键

原因平滑滚动的滞后懒惰列在android jetpack compose

有人能帮我在应用程序上使用模拟位置时避免被发现吗?我已经反编译并粘贴了一个代码,S小文件

如何在停止和销毁时更改函数中Firebase实时数据库的子项的值我试过了,但这不起作用.请使用Kotlin

Android 11:在try 获取文件的永久权限后,仍然没有读写权限

如何修复Google Play市场中有关已删除广告库的错误消息?

为什么 Android Studio 中的 theme.xml 目录没有任何原色

需要在按钮 onclick 上从 string.xml 获取值. @Composable 调用只能在@Composable 函数的上下文中发生

我可以从 Android 中的选定文本中获取周围的文本吗?

如何在 Jetpack Compose 中将文本绘制在另一个对象的中心?

在 Kotlin 中设置 startActivity() 时类型不匹配

如何在 Jetpack Compose 中设置行宽等于 TextField 的宽度?

获取模板向导配方类 Intellij 中的应用程序包名称

有什么方法可以确定正在使用哪个 Android 手机的麦克风进行录音?

如何在 compose 中使用 BottomSheetScaffold 为底页设置半展开高度?

如何将房间数据库导出到 .CSV

如何在 flow.stateIn() 之后从流中的另一个函数发出emits ?