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

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

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

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


person Zell Pearly    schedule 08.11.2017    source источник


Ответы (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
    }
}
});

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

person Hemant Parmar    schedule 08.11.2017
comment
так что мне нужно привязать это к родительскому виду всего макета? - person Zell Pearly; 08.11.2017