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

dialog.dismiss();

}

});

builder.setCancelable(false);

builder.show();

}

15059066771.jpg?201706154246

还有另外两种实现方法

一、在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

false

YourActivity.this.setFinishOnTouchOutside(false);

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

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐