美文网首页Android UI
DialogFragment 不可取消和点击外部不消失

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

作者: Marlon_IT | 来源:发表于2017-09-21 11:21 被阅读728次

    在最近的项目开发中需要通过短信验证码登录,实现中需要用到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;
                }
            });
    

    相关文章

      网友评论

      • 那一年我两岁:在我的应用中直接使用DialogFragment.getDialog.setCancelable(false);方法和DialogFragment.getDialog.setCanceledOnTouchOutside(false);方法,程序会报错空指针
        我的解决办法是,在自己创建的DialogFragment类中的 onCreateView()方法中直接使用
        getDialog().setCancelable(false);
        getDialog().setCanceledOnTouchOutside(false);

      本文标题:DialogFragment 不可取消和点击外部不消失

      本文链接:https://www.haomeiwen.com/subject/tmrzsxtx.html