From 7324b92dc45679d3b38526378b7d3e78ad082641 Mon Sep 17 00:00:00 2001 From: Lulu Wu Date: Wed, 4 Nov 2020 12:46:56 -0800 Subject: [PATCH] Change StatusBar default style handling strategy Summary: Changelog: [Android] - Change StatusBar style handling strategy Previously Android status bar can set to `dark-content` or `default`, I made the following changes: - Added `light-content` to get align with iOS - Changed the behavior of `default` from setting status bar with 'SYSTEM_UI_FLAG_LIGHT_STATUS_BAR' to not doing anything, I did this because 1, `setStyle('default')` is found called even without explicitly declared on that surface, which I think should fail silently 2, my idea is that user should set status bar style to `dark-content` or `light-content` explicitly instead of using `default`. - Fixed the bug found in Dating Settings's Second Look. Reviewed By: RSNara Differential Revision: D24714152 fbshipit-source-id: 76e7d0d45fd3b8c3733efaee81426f5f449cc7d8 --- Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js | 1 + Libraries/Components/StatusBar/StatusBar.js | 2 +- .../com/facebook/react/modules/statusbar/StatusBarModule.java | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js b/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js index 5b00b2a4c21..b451b90827e 100644 --- a/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +++ b/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js @@ -55,6 +55,7 @@ const NativeStatusBarManager = { /** * - statusBarStyles can be: * - 'default' + * - 'light-content' * - 'dark-content' */ setStyle(statusBarStyle?: ?string): void { diff --git a/Libraries/Components/StatusBar/StatusBar.js b/Libraries/Components/StatusBar/StatusBar.js index 021e75494d1..75b51a08282 100644 --- a/Libraries/Components/StatusBar/StatusBar.js +++ b/Libraries/Components/StatusBar/StatusBar.js @@ -25,7 +25,7 @@ import NativeStatusBarManagerIOS from './NativeStatusBarManagerIOS'; */ export type StatusBarStyle = $Keys<{ /** - * Default status bar style (dark for iOS, light for Android) + * Default status bar style (dark for iOS, no change for Android) */ default: string, /** diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.java index b4a4e80e684..44391965e63 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.java @@ -194,7 +194,7 @@ public class StatusBarModule extends NativeStatusBarManagerAndroidSpec { int systemUiVisibilityFlags = decorView.getSystemUiVisibility(); if ("dark-content".equals(style)) { systemUiVisibilityFlags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; - } else { + } else if ("light-content".equals(style)) { systemUiVisibilityFlags &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; } decorView.setSystemUiVisibility(systemUiVisibilityFlags);