如何使Android软键盘更好地显示或隐藏监听器

时间:2017-01-06 15:48:55

标签: android android-layout keyboard

我已经看到很多关于软键盘显示/隐藏监听器解决方案的问题。

我认为这个解决方案很棒。但实际上它不起作用。太糟糕了。 Listen for keyboard show or hide event in android

最后,我使用了这个解决方案。但我认为这个解决方案只是一个临时解决方案。我们不知道200dp正确代表软键盘。 How to check visibility of software keyboard in Android?

我希望EditText和Textview下面的EditText都在软键盘的顶部,当显示软键盘时。 我希望EditText和TextView(父布局是LinearLayout)并不总是对齐父底部 所以...... 机器人:windowSoftInputMode =" adjustresize"是不合适的。

我认为adjustPan很棒但是当EditText处于焦点时它只让EditText在顶部。我希望它们都在顶部.T_T帮助我!非常感谢。

1 个答案:

答案 0 :(得分:6)

要知道键盘是隐藏还是可见,我使用以下代码:

 view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                Rect r = new Rect();
                view.getWindowVisibleDisplayFrame(r);
                if (view.getRootView().getHeight() - (r.bottom - r.top) > 500) { // if more than 100 pixels, its probably a keyboard...
                    onKeyboardShow();
                } else {
                    onKeyboardHidden();
                }
            }
        });

onKeyboardShow& onKeyboardHidden函数是我自己的函数,然后执行所需的操作。