【问题标题】:How to make Android Soft keyboard showing or hiding listener better如何让 Android 软键盘更好地显示或隐藏监听器
【发布时间】:2017-01-06 15:48:54
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: android android-layout keyboard


    【解决方案1】:

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

     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 函数是我自己的,然后可以执行所需的操作。

    【讨论】:

    • 谢谢~但我不想要这个解决方案。我说过“但我认为这个解决方案只是一个临时解决方案。我们不知道 500dp(或像素)正确代表软键盘”。
    • 没有临时解决办法。我今天实际上正在环顾四周,虽然有些图书馆更多的是帮助类。没有什么是永久的,因为谷歌没有这方面的课程。谷歌对键盘的支持很糟糕,我希望他们能解决这个问题并为我们提供对键盘的官方支持,开发人员可以轻松地处理这种事情(包括隐藏和显示键盘)
    • 感谢您提供此详细信息。希望官方能放出API。 x_x
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多