Android 6.0 如何隐藏导航栏?
How to hide the navigation bar in Android 6.0?
我有以下代码:
getWindow().getDecorView().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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
此代码适用于 Android Lollipop,在粘性沉浸模式下隐藏导航栏。但是现在,当我使用 Android 6.0 在我的 phone 上测试它时,导航栏消失了,而导航栏曾经所在的黑色矩形仍然存在,挡住了屏幕的一部分。
我发现了似乎可以解决此问题的解决方法。我支持纵向和横向,并注意到如果我旋转成横向或以横向启动应用程序,黑色矩形就会消失。将以下代码添加到我的主要 activity 的 onCreate() 方法(设置沉浸式标志后)解决了问题:
if (Build.VERSION.SDK_INT >= 23) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
}
回顾我的问题,我想补充一下我现在使用的解决方案,从那以后我一直没有失败,我不记得我是在其他地方看到它还是自己来的,但我很高兴它有效。
public static void activiateFullscreen(Activity activity){
View decorView = activity.getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
if (Build.VERSION.SDK_INT >= 17) {
uiOptions ^= View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN
|View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
if (Build.VERSION.SDK_INT >= 19) {
uiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
}
decorView.setSystemUiVisibility(uiOptions);
}
希望这对某人有所帮助!
我有以下代码:
getWindow().getDecorView().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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
此代码适用于 Android Lollipop,在粘性沉浸模式下隐藏导航栏。但是现在,当我使用 Android 6.0 在我的 phone 上测试它时,导航栏消失了,而导航栏曾经所在的黑色矩形仍然存在,挡住了屏幕的一部分。
我发现了似乎可以解决此问题的解决方法。我支持纵向和横向,并注意到如果我旋转成横向或以横向启动应用程序,黑色矩形就会消失。将以下代码添加到我的主要 activity 的 onCreate() 方法(设置沉浸式标志后)解决了问题:
if (Build.VERSION.SDK_INT >= 23) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
}
回顾我的问题,我想补充一下我现在使用的解决方案,从那以后我一直没有失败,我不记得我是在其他地方看到它还是自己来的,但我很高兴它有效。
public static void activiateFullscreen(Activity activity){
View decorView = activity.getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
if (Build.VERSION.SDK_INT >= 17) {
uiOptions ^= View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN
|View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
if (Build.VERSION.SDK_INT >= 19) {
uiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
}
decorView.setSystemUiVisibility(uiOptions);
}
希望这对某人有所帮助!