DialogFragment 不可取消和點擊外部不消失

在最近的項目開發中須要經過短信驗證碼登陸,實現中須要用到DialogFragment來實現驗證碼輸入框,具體效果以下圖:ide

 

TIM圖片20170921105551.jpgui

可是在具體使用過程當中可能不當心觸碰到透明背景,致使DialogFragment觸發消失,那麼怎麼屏蔽呢?
原先在Activity顯示Dialog,直接設置就能夠了。以下所示:.net

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

那麼在DialogFragment並無這樣的方法,應該怎麼實現呢?通過谷歌一番以後,找到了code

網上的作法對象

http://blog.csdn.net/guijiaoba/article/details/50680726
這篇文章的方法,確實也能夠實現,可是總感受很複雜。blog

咱們的作法圖片

通過一番摸索以後,我發如今DialogFragment中有一個getDialog的方法,返回的是DialogFragment中的Dialog對象,那麼如今我只須要操做這個Dialog對象就行;
在使用的時候:開發

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

後面附上點擊返回鍵不消失DialogFragment的方法:get

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;
            }
        });
相關文章
相關標籤/搜索