Android显示视图并同时隐藏键盘.奇怪的行为

col*_*ore 12 keyboard android

我有一个自定义视图,可以显示在同一空间中的视图应该是Android的软键盘原生.

我需要打开键盘,单击按钮,隐藏键盘并在键盘所在的同一位置显示其他视图.

我现在只使用隐藏键盘并显示自定义视图,但有一个奇怪的行为和最小滞后和重叠.

有人实施了类似的东西吗?

Rah*_*ana 3

我检查了 Github 项目并发现了该错误,并使用以下代码修复了该错误:

if (isRedPanelVisible()) {
    showRedPanel(false);
    showKeyboard(true, new KeyboardCallback() {
        @Override
        public void onKeyboardDone(boolean isVisible) {

        }
    });
}
if (KeyboardVisibilityEvent.isKeyboardVisible(TestActivity.this)) {
    hideKeyboard(TestActivity.this);
    new android.os.Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            showRedPanel(true);
        }
    }, 100);
Run Code Online (Sandbox Code Playgroud)

注意:您只需将其放在 TestActivity.java 中按钮的单击事件下并删除以前的代码即可。

我做了什么

如果你的readPanel 可见,那么我调用showRedPanelfalse尝试打开键盘。

之后,我添加了对键盘可见性事件的检查,如果键盘可见,我调用hideKeyboard使键盘消失并在延迟100 毫秒showReadPanel后调用true

代码:隐藏键盘

public void hideKeyboard(Activity activity) {
        // Check if no view has focus:
        try {
            View view = activity.getCurrentFocus();
            if (view != null) {
                InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
                inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            }
        } catch (Exception e) {

        }
    }
Run Code Online (Sandbox Code Playgroud)