当前位置:   article > 正文

DialogFragment 不可取消和点击外部不消失_getdialog().setcanceledontouchoutside不起作用

getdialog().setcanceledontouchoutside不起作用

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

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

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

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

网上的做法

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

我们的做法

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

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

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

  1. DialogFragment.getDialog().setOnKeyListener(new DialogInterface.OnKeyListener() {
  2. @Override
  3. public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
  4. if (keyCode == KeyEvent.KEYCODE_BACK) {
  5. return true;
  6. }
  7. return false;
  8. }
  9. });

如对此有疑问,请联系qq1164688204。

推荐Android开源项目

项目功能介绍:RxJava2和Retrofit2项目,添加自动管理token功能,添加RxJava2生命周期管理,使用App架构设计是MVP模式和MVVM模式,同时使用组件化,部分代码使用Kotlin,此项目持续维护中。

项目地址:https://gitee.com/urasaki/RxJava2AndRetrofit2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/770005
推荐阅读
相关标签
  

闽ICP备14008679号