我有一个正在使用主题的活动。对话框样式,使其成为另一个活动上方的浮动窗口。但是,当我在对话框窗口外(在后台活动上)单击时,对话框关闭。我怎样才能阻止这种行为?
当前回答
对我来说有用的是创建DialogFragment并将其设置为不可取消:
dialog.setCancelable(false);
其他回答
这对你有帮助。它是处理touch outside事件的一种方式:
如何取消一个对话主题,如活动时触摸窗外?
通过捕捉事件,什么都不做,我认为你可以阻止关闭。但奇怪的是,你的活动对话框的默认行为应该是当你触摸外部时不关闭自己。
(PS:代码使用WindowManager.LayoutParams)
对于更高的API 10,对话框在外部触摸时消失,而在低于API 11的情况下,对话框不会消失。为了防止这种情况,你需要做到:
xml: <项目名称=“android: windowcloseonteutside”>false</项目>
OR
在onCreate()方法中,使用:this.setFinishOnTouchOutside(false);
注:对于API 10及以下,此方法无效,也不需要。
你实际上有一个活动(即使它看起来像一个对话框),因此你应该调用setFinishOnTouchOutside(false)从你的活动,如果你想保持它打开时,后台活动被单击。
编辑:这只适用于android API级别11或更高
简单地说,
alertDialog.setCancelable(false);
防止用户在对话框外单击。
为了防止对话框在返回键按下时被取消,使用这个
dialog.setCancelable(false);
为了防止对话框在外部触摸时消失,使用这个
dialog.setCanceledOnTouchOutside(false);
推荐文章
- 转换列表的最佳方法:map还是foreach?
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- 如何隐藏动作栏之前的活动被创建,然后再显示它?
- Mockito.any()传递带有泛型的接口
- 在IntelliJ 10.5中运行测试时,出现“NoSuchMethodError: org.hamcrest. matcher . descripbemismatch”
- 是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
- 使用String.split()和多个分隔符
- Java数组有最大大小吗?
- 在Android中将字符串转换为Uri
- 从JSON生成Java类?
- 为什么java.util.Set没有get(int index)?
- Swing和AWT的区别是什么?
- 如何在NestedScrollView内使用RecyclerView ?
- 为什么Java流是一次性的?