欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-02-23 15:10:16
这个问题之前一直困扰我,我的需求就是点击对话框外面和按返回键对话框不会消失,按返回键还好解决,拦截下返回键就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();
  }

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

还有另外两种实现方法

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

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