您的位置:首页 > 移动开发 > Android开发

Android使alertDialog.builder不会点击外面和按返回键消失的方法

2017-01-06 15:48 1341 查看

这个问题之前一直困扰我,我的需求就是点击对话框外面和按返回键对话框不会消失,按返回键还好解决,拦截下返回键就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);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  alertdialog android