跳转至

导航栏和状态栏配置

本章节介绍如何隐藏或显示 Android 系统导航栏和状态栏。

命令行

通过 ADB 命令临时隐藏或显示状态栏和导航栏,重启设备后恢复为默认状态。

Rockchip Series / T527

# 隐藏状态栏
adb shell am broadcast -a android.intent.action.HIDE_STATUSBAR_BAR

# 显示状态栏
adb shell am broadcast -a android.intent.action.SHOW_STATUSBAR_BAR

# 隐藏导航栏
adb shell am broadcast -a android.intent.action.HIDE_NAVIGATION_BAR

# 显示导航栏
adb shell am broadcast -a android.intent.action.SHOW_NAVIGATION_BAR

A133

通过系统属性设置,重启设备后生效:

adb shell setprop persist.sys.ban_sb true
adb shell setprop persist.sys.ban_nb true
adb reboot

A733

通过全局设置控制,设置后立即生效,无需重启设备:

# 隐藏状态栏
adb shell settings put global status_bar_enabled 0

# 显示状态栏
adb shell settings put global status_bar_enabled 1

# 隐藏导航栏
adb shell settings put global navigation_bar_enabled 0

# 显示导航栏
adb shell settings put global navigation_bar_enabled 1

APP 例程

从网盘中获取状态栏和导航栏测试 APP 例程

SDK 源码修改

通过修改 SystemUI 源码实现默认隐藏或禁用状态栏和导航栏。

默认隐藏状态栏

修改 CentralSurfacesImpl.java,调用 hideStatusBar() 方法:

--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -952,6 +952,8 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
         mRegisterStatusBarResult = result;

         createAndAddWindows(result);
+        hideStatusBar();

         if (mWallpaperSupported) {
             // Make sure we always have the most current wallpaper info.

默认禁止状态栏下拉

修改 CommandQueue.java,使 panelsEnabled() 方法返回 false

--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
@@ -536,10 +536,12 @@ public class CommandQueue extends IStatusBar.Stub implements

     // TODO(b/118592525): add multi-display support if needed.
     public boolean panelsEnabled() {
-        final int disabled1 = getDisabled1(mDisplayTracker.getDefaultDisplayId());
-        final int disabled2 = getDisabled2(mDisplayTracker.getDefaultDisplayId());
-        return (disabled1 & StatusBarManager.DISABLE_EXPAND) == 0
-                && (disabled2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) == 0;
+        return false;
+        // final int disabled1 = getDisabled1(mDisplayTracker.getDefaultDisplayId());
+        // final int disabled2 = getDisabled2(mDisplayTracker.getDefaultDisplayId());
+        // return (disabled1 & StatusBarManager.DISABLE_EXPAND) == 0
+        //         && (disabled2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) == 0;
+
     }

默认隐藏导航栏

修改 CentralSurfacesImpl.java,调用 hideNavigation() 方法:

--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -952,6 +952,8 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
         mRegisterStatusBarResult = result;

         createAndAddWindows(result);
+        hideNavigation();

         if (mWallpaperSupported) {
             // Make sure we always have the most current wallpaper info.

Overlay 配置

通过修改 overlay 配置文件实现开机默认状态。

默认手势导航

RK 平台修改 config.xml 中的 config_navBarInteractionMode 启用手势导航:

--- a/device/rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/device/rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml
@@ -61,7 +61,7 @@
          0: 3 button mode (back, home, overview buttons)
          1: 2 button mode (back, home buttons + swipe up for overview)
          2: gestures only for back, home and overview -->
-    <integer name="config_navBarInteractionMode">0</integer>
+    <integer name="config_navBarInteractionMode">2</integer>
     <bool name="config_swipe_up_gesture_setting_available">true</bool>
  </resources>

默认隐藏状态栏 / 导航栏

A733 / T527 修改 SettingsProvider 的 overlay 配置文件,使状态栏和导航栏在开机后默认隐藏:

--- a/.../SettingsProvider/res/values/defaults.xml
+++ b/.../SettingsProvider/res/values/defaults.xml
+
+    <bool name="def_navigation_bar_enabled">false</bool>
+    <bool name="def_status_bar_enabled">false</bool>
型号 Overlay 路径
K9 device/softwinner/saturn/t527-demo/overlay/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
K10B device/softwinner/jupiter/a733-demo-aiot/overlay/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml