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