在 Android 上检测到隐藏键盘事件
Detect Hide Keyboard Event on Android
所以我需要保留应用程序的沉浸式模式。
该应用程序在沉浸式模式下具有全屏 webview,但问题是 webview 内容有一个文本框。
当用户触摸文本框时,将触发软键盘,从而禁用沉浸模式。
我解决了文本框失去焦点时的问题,它会触发 javascript 接口再次重新激活沉浸模式。但问题是显示软键盘时的 hide/back 按钮。
here is the image
我尝试了 onKeyDown
、dispatchKeyEvent
和 onBackPressed
,但其中 none 在调试时被触发。
要获得软键盘的可见性,您必须这样做:
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
}
}
});
编码愉快!!
所以我需要保留应用程序的沉浸式模式。 该应用程序在沉浸式模式下具有全屏 webview,但问题是 webview 内容有一个文本框。 当用户触摸文本框时,将触发软键盘,从而禁用沉浸模式。 我解决了文本框失去焦点时的问题,它会触发 javascript 接口再次重新激活沉浸模式。但问题是显示软键盘时的 hide/back 按钮。
here is the image
我尝试了 onKeyDown
、dispatchKeyEvent
和 onBackPressed
,但其中 none 在调试时被触发。
要获得软键盘的可见性,您必须这样做:
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
}
}
});
编码愉快!!