Android中有一个名为“显示虚拟键盘”的设置,在我的手机中位于:
Settings > Languages & input > Physical keyboard
。它控制在物理键盘处于活动状态时是否将虚拟键盘保留在屏幕上。
有没有办法以编程方式查询它是启用还是禁用?我在Android开发者的Settings.System列表中找不到它。
private boolean isKeyboardShowing = false;
private void detectKeyboard() {
rootView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
rootView.getWindowVisibleDisplayFrame(r);
int screenHeight = rootView.getRootView().getHeight();
int keypadHeight = screenHeight - r.bottom;
if (keypadHeight > screenHeight * 0.15) {
// keyboard is opened
if (!isKeyboardShowing) {
isKeyboardShowing = true;
}
}
else {
// keyboard is closed
if (isKeyboardShowing) {
isKeyboardShowing = false;
}
}
}
});
}