goweii / AnyLayer

Android稳定高效的浮层创建管理框架
https://github.com/goweii/AnyLayer
Apache License 2.0
993 stars 114 forks source link

使用compatSoftInput 出现如下问题 #36

Closed hardlove closed 3 years ago

hardlove commented 3 years ago

在我的两个界面中都使用了同一个dialog,代码如下: `public static void showBottomInputDialog(Activity activity, OnDialogClickListener listener) { AnyLayer.dialog(activity) .backgroundDimDefault() .gravity(Gravity.BOTTOM) .contentView(R.layout.dialog_text_input) .onVisibleChangeListener(new Layer.OnVisibleChangeListener() { @Override public void onShow(Layer layer) { ((DialogLayer) layer).compatSoftInput(true, layer.getView(R.id.edtText)); }

                @Override
                public void onDismiss(Layer layer) {
                    ((DialogLayer) layer).removeSoftInput();
                }
            })
            .onClick((layer, v) -> {
                if (v.getId() == R.id.iv_confirm) {
                    if (listener != null) {
                        String content = ((EditText) layer.getView(R.id.edtText)).getText().toString().trim();
                        if (ObjectUtils.isEmpty(content)) {
                            ToastUtils.showShort("请输入文字");
                        } else {
                            listener.onConfirm(content, layer);
                            layer.dismiss();
                        }
                    }
                } else if (v.getId() == R.id.iv_cancel) {
                    layer.dismiss();
                }

            }, R.id.iv_confirm, R.id.iv_cancel)
            .show();
}`

第一个界面弹窗后显示正常,如下: image

第二个界面弹窗后,出现异常: 中间会多出一段空白,点击空白处, image

空白处消失,如下: image 再点击输入框后,页面显示正常,如下: image

请问这种情况,我该如何处理呢?

goweii commented 3 years ago

试下4.1.3

hardlove commented 3 years ago

试下4.1.3

问题完美解决,但是有个小的体验问题。调用 layer.dismiss() 后,软件盘没有关闭,可以优化一下