onInputShowListener Android - 是否可能检测到软键盘是否显示?

3
在解决了我的Android应用程序中的另一个问题之后,我遇到了另一个问题。
如果显示软键盘,例如滑动输入或常规Android键盘,则隐藏某些可视元素非常重要。我尝试了onConfigurationChange="KeyboardShow"(伪代码),但无法获得例如Skype显示时的事件。
现在我的问题是,是否有任何解决方案、功能或监听器,可以处理这样的操作?
希望有人能帮助我。
诚挚地, Mike Penz

你想知道是否显示了任何键盘?还是特定的一个? - Cheryl Simon
如果有的话,使用软键盘而不是硬件键盘。 - mikepenz
1个回答

0

可能有更好的方法,但一种可能性是在清单中添加:android:configChanges="keyboardHidden"。这将随着任何键盘更改而触发,因此您需要查询Configuration对象。

static Configuration prevConf = Configuration();
static int ignoreMasks = Configuration.HARDKEYBOARDHIDDEN_NO|Configuration.HARDKEYBOARDHIDDEN_YES;

onCreate() {
   prevConf = setToDefaults();
}
// all your code here

@Override
public void onConfigurationChanged (Configuration newConfig) {
    int deltas = newConfig.diff (prevConf); // what changed?
    prevConf = newConfig;

    if (delta & ignoreMasks) 
        return; // you're not interested in hard keyboards.

    //  your code here 
}

我对位运算符不太擅长,所以你可能需要绕过这个问题。

这是API文档:

http://developer.android.com/reference/android/R.attr.html#configChanges

http://developer.android.com/reference/android/app/Activity.html#onConfigurationChanged%28android.content.res.Configuration%29

http://developer.android.com/reference/android/content/res/Configuration.html


顺便提一下,这里有一个相关的问题:https://dev59.com/WHI95IYBdhLWcg3wyRM0,其中有一个使用间接方法依赖于布局大小变化的答案。 - Aleadam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接