Android使alertDialog.builder不会点击外面和按返回键消失的方法
程序员文章站
2024-02-20 19:45:28
这个问题之前一直困扰我,我的需求就是点击对话框外面和按返回键对话框不会消失,按返回键还好解决,拦截下返回键就ok了。
但是点击外面不好解决。之前有人说模态对话框,我看了一...
这个问题之前一直困扰我,我的需求就是点击对话框外面和按返回键对话框不会消失,按返回键还好解决,拦截下返回键就ok了。
但是点击外面不好解决。之前有人说模态对话框,我看了一会,觉得不是我想要的效果。popwindow的话,必须提供父view.
重新看下api,发现设置setcancelable属性就行了。
如:
public void shownoproject(){ builder builder = new alertdialog.builder(mainactivity.this) .setmessage("您还没有项目,请先添加项目") .setpositivebutton("去添加项目", new onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { dialog.dismiss(); } }) .setnegativebutton("关闭", new onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { dialog.dismiss(); } }); builder.setcancelable(false); builder.show(); }
还有另外两种实现方法
一、在oncreate()方法中设置dialog点击屏幕不可取消,实例代码如下:
@override public void oncreate(bundle icicle) { super.oncreate(icicle); this.setcancelable(false);// 设置点击屏幕dialog不消失 int style = dialogfragment.style_normal, theme = 0; setstyle(style,theme); }
二、将activity设置成窗口的样式实现dialog或者popupwindow效果在开发中是很常用的一种方式,在androidmenifest.xml中将需要设置的activity增加android:theme="@android:style/theme.dialog"属性即可。但是窗口化的activity有个问题就是:点击窗口空白处activity会finish。如何避免这个问题呢,办法如下:
1、resvaluesstyles.xml
<resources> <style name="theme.soundrecorder" parent="@android:style/theme.holo.dialogwhenlarge"> <item name="android:windowcloseontouchoutside">false</item> </style> </resources>
youractivity.this.setfinishontouchoutside(false);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。