Обнаружение события скрытия клавиатуры на Android

Поэтому мне нужно сохранить режим погружения приложения. Приложение имеет полноэкранный веб-просмотр в режиме погружения, но проблема в том, что у веб-контента есть текстовое поле. Когда пользователь нажимает на текстовое поле, он запускает программную клавиатуру, которая отключает режим погружения. Я решил проблему, когда текстовое поле потеряло фокус, оно снова активирует javascriptinterface в реактивированном иммерсивном режиме. Но проблема в том, что когда отображается экранная клавиша, кнопка "Скрыть / Назад".

вот изображение

Я старался onKeyDown, dispatchKeyEvent а также onBackPressed но ни один из них не срабатывал при отладке.

1 ответ

Решение

Чтобы получить видимость программной клавиатуры, вы должны сделать это:

contentView.getViewTreeObserver().addOnGlobalLayoutListener(new 
ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {

Rect r = new Rect();
contentView.getWindowVisibleDisplayFrame(r);
int screenHeight = contentView.getRootView().getHeight();

int keypadHeight = screenHeight - r.bottom;
if (keypadHeight > screenHeight * 0.15) {
    // keyboard is opened
}
else {
    // keyboard is closed
    }
}
});

Удачного кодирования!

Другие вопросы по тегам