[英]Status bar is hidden under fullscreen but it shows up when menu key pressed in Android
我有一个包含切换全屏功能的应用程序。
使用以下代码成功切换全屏。
if (tofull) {
if (Build.VERSION.SDK_INT < 16) {
Log.i("toggleFullScreen", "API<16");
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
Log.i("toggleFullScreen", "API>=16");
View decorView = getWindow().getDecorView();
// Hide the status bar.
// int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
}
} else {
if (Build.VERSION.SDK_INT < 16) {
Log.i("toggleFullScreen", "API<16");
getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
Log.i("toggleFullScreen", "API>=16");
View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
decorView.setSystemUiVisibility(uiOptions);
}
}
切换到全屏模式后,它可以隐藏状态栏。
但是,当我按下硬件菜单键按钮(我有一个选项菜单,该菜单将在按下菜单键后显示), 状态栏将显示出来 。 并且状态栏不会再次隐藏 。
存在此问题的可能原因是什么?
谁能解决(使状态栏自动再次隐藏)?
那是因为标记已清除,您需要再次调用全屏功能。
请阅读这篇文章。 https://developer.android.com/training/system-ui/immersive.html
请注意,这仅来自api 19。
请在您的活动中覆盖此方法
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
Log.d(TAG,"did pressed menu button");
return true;
}
return super.onKeyUp(keyCode, event);
}
这样一来,您可以避免在应用程序处于全屏模式时显示菜单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.