在最近的項目開發中須要經過短信驗證碼登陸,實現中須要用到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; } });