DialogFragment点击背景透明区域不可取消的设置

实现的DialogFragment的效果图

DialogFragment点击背景透明区域不可取消的设置_第1张图片

 附上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中。 

 

你可能感兴趣的:(Android,记录常识-笑哭)