Browse Source

[Android] Add ability to hide status bar via statusBarHidden option (#1821)

Vadim Ruban 7 years ago
parent
commit
16802218b8

+ 1
- 0
android/app/src/main/java/com/reactnativenavigation/params/StyleParams.java View File

75
     public Orientation orientation;
75
     public Orientation orientation;
76
     public StatusBarTextColorScheme statusBarTextColorScheme;
76
     public StatusBarTextColorScheme statusBarTextColorScheme;
77
     public Color statusBarColor;
77
     public Color statusBarColor;
78
+    public boolean statusBarHidden;
78
     public Color contextualMenuStatusBarColor;
79
     public Color contextualMenuStatusBarColor;
79
     public Color contextualMenuButtonsColor;
80
     public Color contextualMenuButtonsColor;
80
     public Color contextualMenuBackgroundColor;
81
     public Color contextualMenuBackgroundColor;

+ 5
- 0
android/app/src/main/java/com/reactnativenavigation/params/parsers/StyleParamsParser.java View File

29
         StyleParams result = new StyleParams(params);
29
         StyleParams result = new StyleParams(params);
30
         result.orientation = Orientation.fromString(params.getString("orientation", getDefaultOrientation()));
30
         result.orientation = Orientation.fromString(params.getString("orientation", getDefaultOrientation()));
31
         result.statusBarColor = getColor("statusBarColor", getDefaultStatusBarColor());
31
         result.statusBarColor = getColor("statusBarColor", getDefaultStatusBarColor());
32
+        result.statusBarHidden = getBoolean("statusBarHidden", getDefaultStatusHidden());
32
         result.statusBarTextColorScheme = StatusBarTextColorScheme.fromString(params.getString("statusBarTextColorScheme"));
33
         result.statusBarTextColorScheme = StatusBarTextColorScheme.fromString(params.getString("statusBarTextColorScheme"));
33
         result.contextualMenuStatusBarColor = getColor("contextualMenuStatusBarColor", getDefaultContextualMenuStatusBarColor());
34
         result.contextualMenuStatusBarColor = getColor("contextualMenuStatusBarColor", getDefaultContextualMenuStatusBarColor());
34
         result.contextualMenuButtonsColor = getColor("contextualMenuButtonsColor", getDefaultContextualMenuButtonsColor());
35
         result.contextualMenuButtonsColor = getColor("contextualMenuButtonsColor", getDefaultContextualMenuButtonsColor());
260
         return AppStyle.appStyle == null ? new StyleParams.Color() : AppStyle.appStyle.statusBarColor;
261
         return AppStyle.appStyle == null ? new StyleParams.Color() : AppStyle.appStyle.statusBarColor;
261
     }
262
     }
262
 
263
 
264
+    private boolean getDefaultStatusHidden() {
265
+        return AppStyle.appStyle != null && AppStyle.appStyle.statusBarHidden;
266
+    }
267
+
263
     private StyleParams.Font getDefaultBottomTabsFontFamily() {
268
     private StyleParams.Font getDefaultBottomTabsFontFamily() {
264
         return AppStyle.appStyle == null ? new StyleParams.Font() : AppStyle.appStyle.bottomTabFontFamily;
269
         return AppStyle.appStyle == null ? new StyleParams.Font() : AppStyle.appStyle.bottomTabFontFamily;
265
     }
270
     }

+ 11
- 0
android/app/src/main/java/com/reactnativenavigation/screens/Screen.java View File

8
 import android.support.v7.app.AppCompatActivity;
8
 import android.support.v7.app.AppCompatActivity;
9
 import android.view.View;
9
 import android.view.View;
10
 import android.view.Window;
10
 import android.view.Window;
11
+import android.view.WindowManager;
11
 import android.widget.RelativeLayout;
12
 import android.widget.RelativeLayout;
12
 
13
 
13
 import com.facebook.react.bridge.Callback;
14
 import com.facebook.react.bridge.Callback;
105
 
106
 
106
     public void setStyle() {
107
     public void setStyle() {
107
         setStatusBarColor(styleParams.statusBarColor);
108
         setStatusBarColor(styleParams.statusBarColor);
109
+        setStatusBarHidden(styleParams.statusBarHidden);
108
         setStatusBarTextColorScheme(styleParams.statusBarTextColorScheme);
110
         setStatusBarTextColorScheme(styleParams.statusBarTextColorScheme);
109
         setNavigationBarColor(styleParams.navigationBarColor);
111
         setNavigationBarColor(styleParams.navigationBarColor);
110
         topBar.setStyle(styleParams);
112
         topBar.setStyle(styleParams);
175
         }
177
         }
176
     }
178
     }
177
 
179
 
180
+    private void setStatusBarHidden(boolean statusBarHidden) {
181
+        final Window window = ((NavigationActivity) activity).getScreenWindow();
182
+        if (statusBarHidden) {
183
+            window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
184
+        } else {
185
+            window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
186
+        }
187
+    }
188
+
178
     @TargetApi(Build.VERSION_CODES.M)
189
     @TargetApi(Build.VERSION_CODES.M)
179
     private void setStatusBarTextColorScheme(StatusBarTextColorScheme textColorScheme) {
190
     private void setStatusBarTextColorScheme(StatusBarTextColorScheme textColorScheme) {
180
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return;
191
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return;

+ 1
- 0
src/deprecated/platformSpecificDeprecated.android.js View File

139
   let ret = {
139
   let ret = {
140
     orientation: originalStyleObject.orientation,
140
     orientation: originalStyleObject.orientation,
141
     statusBarColor: processColor(originalStyleObject.statusBarColor),
141
     statusBarColor: processColor(originalStyleObject.statusBarColor),
142
+    statusBarHidden: originalStyleObject.statusBarHidden,
142
     statusBarTextColorScheme: originalStyleObject.statusBarTextColorScheme,
143
     statusBarTextColorScheme: originalStyleObject.statusBarTextColorScheme,
143
     topBarReactView: originalStyleObject.navBarCustomView,
144
     topBarReactView: originalStyleObject.navBarCustomView,
144
     topBarReactViewAlignment: originalStyleObject.navBarComponentAlignment,
145
     topBarReactViewAlignment: originalStyleObject.navBarComponentAlignment,