DialogFragment 不可取消和点击外部不消失

在最近的项目开发中需要通过短信验证码登录,实现中需要用到DialogFragment来实现验证码输入框,具体效果如下图:


TIM图片20170921105551.jpg

但是在具体使用过程中可能不小心触碰到透明背景,导致DialogFragment触发消失,那么怎么屏蔽呢?
原先在Activity显示Dialog,直接设置就可以了。如下所示:

alertDialog.setCancelable(false);
alertDialog.setCanceledOnTouchOutside(false);

那么在DialogFragment并没有这样的方法,应该怎么实现呢?经过谷歌一番之后,找到了

网上的做法

http://blog.csdn.net/guijiaoba/article/details/50680726
这篇文章的方法,确实也可以实现,但是总感觉很复杂。

我们的做法

经过一番摸索之后,我发现在DialogFragment中有一个getDialog的方法,返回的是DialogFragment中的Dialog对象,那么现在我只需要操作这个Dialog对象就行;
在使用的时候:

          DialogFragment.getDialog.setCancelable(false);
          DialogFragment.getDialog.setCanceledOnTouchOutside(false);

后面附上点击返回键不消失DialogFragment的方法:

DialogFragment.getDialog().setOnKeyListener(new DialogInterface.OnKeyListener() {
            @Override
            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                    return true;
                }
                return false;
            }
        });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,267评论 25 708
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,805评论 18 399
  • 参加这期绘画培训,我是犹豫了好久的,因为实在感觉没有时间。但是,随着写宝宝日记,读书笔记,还有自己的日记的次数越来...
    三水原童阅读 292评论 2 3
  • 昨天早上是没出操,这个星期四算是睡了个好懒觉,睡到九点多才起来,起来就是上课,上英语课,英语课上也还是一样,没什么...
    坚志阅读 249评论 0 0
  • 细雨绵绵, 步履姗姗, 她在遥望, 你在何方。
    王某人_阅读 239评论 2 2

友情链接更多精彩内容