DialogFragment点击背景透明区域不可取消的设置
实现的DialogFragment的效果图
附上BaseFragment中的代码:
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
dialog = getDialog();
if(dialog!=null){
if(dialog.getWindow()!=null){
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
}
// 主要是这两句起了作用
dialog.setCanceledOnTouchOutside(isCancel());
dialog.setCancelable(isCancel());
}
View v = inflater.inflate(getLayoutRes(), container, false);
bindView(v);
return v;
}
/**
* 设置是否可以cancel
* @return
*/
protected abstract boolean isCancel();
当为强制更新的时候,back key需要屏蔽,代码如下:
/**
* 这里主要是处理返回键逻辑
*/
private void onKeyListener() {
if(getDialog()!=null){
getDialog().setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
switch (keyCode) {
// 返回键
case KeyEvent.KEYCODE_BACK:
if (isForceUpdate) {
return true;
}
default:
break;
}
return false;
}
});
}
}
也需要放在onCreateView中。