android软键盘和导航栏冲突,Android隐藏导航栏/保持沉浸式模式与软键盘外观
我想出了一个解决方法,检查每个内部的导航栏的状态,尝试隐藏它,并再次检查(再次).这是一些代码,确保在软键盘关闭后的2秒内导航栏被隐藏.private final Runnable checkSystemUiRunnable = new Runnable() {@Overridepublic void run() {checkHideSystemUI();}};private void check
我想出了一个解决方法,检查每个内部的导航栏的状态,尝试隐藏它,并再次检查(再次).
这是一些代码,确保在软键盘关闭后的2秒内导航栏被隐藏.
private final Runnable checkSystemUiRunnable = new Runnable() {
@Override
public void run() {
checkHideSystemUI();
}
};
private void checkHideSystemUI() {
// Check if system UI is shown and hide it by post a delayed handler
if (isSystemUiShown) {
hideSystemUI();
handler.postDelayed(checkSystemUiRunnable, SYSTEM_UI_HIDE_DELAY);
}
}
private void hideSystemUI() {
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE);
}
// In onCreate()
decorView.setOnSystemUiVisibilityChangeListener(
new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
handler.postDelayed(checkSystemUiRunnable, SYSTEM_UI_HIDE_DELAY);
isSystemUiShown = true;
} else {
isSystemUiShown = false;
}
}
});
更多推荐
所有评论(0)