推扬网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
推扬网 门户 经验分享 查看内容

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

2020-4-11 13:36| 发布者: admin| 查看: 423| 评论: 0

本篇文章主要介绍了Android使alertDialog.builder不会点击外面和按返回键消失的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

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

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


鲜花

握手

雷人

路过

鸡蛋

最新评论

精选推荐

    广告服务|投稿要求|禁言标准|版权说明|免责声明|手机版|小黑屋|推扬网 ( 粤ICP备18134897号 )|网站地图 | 邮箱:vayae@hotmail.com

    GMT+8, 2024-3-29 16:38 , Processed in 0.065339 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    返回顶部