onInputShowListener Android - 是否可以检测是否显示任何软键盘?

时间:2011-05-13 16:55:49

标签: android input keyboard listener show

在修复我的Android应用程序中的另一个问题之后,我又来了另一件事。

重要的是我可以做一些事情,比如隐藏一些视觉元素,如果SoftKeyboard这样输入像Swipe或普通的Android键盘那样显示。

我已经尝试了onConfigurationChange =“KeyboardShow”(伪代码),但是在显示skype时没有更改来获取事件。

所以现在我的问题是,是否有任何解决方案或功能或监听器,我可以用它来处理这样的行为?

我希望有人可以帮助我。

诚恳, Mike Penz

1 个答案:

答案 0 :(得分: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