onInputShowListener Android - возможно ли определить, отображается ли какая-либо программная клавиатура? - PullRequest
3 голосов
/ 13 мая 2011

после исправления другой проблемы в моем приложении для Android я пришел к другому.

Было бы важно, чтобы я мог что-то сделать, например, скрыть некоторые визуальные элементы, если на SoftKeyboard отображается такой ввод, как Swipe или обычная клавиатура Android.

Я пробовал onConfigurationChange = "KeyboardShow" (псевдокод), но не имел изменений, чтобы получить событие, когда, например, был показан Skype.

Итак, теперь мой вопрос: есть ли какое-либо решение, функция или слушатель, с помощью которых я могу справиться с таким действием?

Я надеюсь, что кто-то может мне помочь.

Sincerly, Майк Пенз

1 Ответ

0 голосов
/ 13 мая 2011

Возможно, есть лучшие подходы, но есть возможность добавить: 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

...