Browse Source

Support navBarTransparent on Android

Guy Carmeli 8 years ago
parent
commit
30991e3077

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

43
     public boolean drawScreenBelowTopBar;
43
     public boolean drawScreenBelowTopBar;
44
 
44
 
45
     public boolean titleBarHidden;
45
     public boolean titleBarHidden;
46
+    public boolean topBarTransparent;
46
     public Color titleBarTitleColor;
47
     public Color titleBarTitleColor;
47
     public Color titleBarSubtitleColor;
48
     public Color titleBarSubtitleColor;
48
     public Color titleBarButtonColor;
49
     public Color titleBarButtonColor;

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

23
 
23
 
24
         result.topBarColor = getColor("topBarColor", getDefaultTopBarColor());
24
         result.topBarColor = getColor("topBarColor", getDefaultTopBarColor());
25
         result.titleBarHidden = getBoolean("titleBarHidden", getDefaultTopBarHidden());
25
         result.titleBarHidden = getBoolean("titleBarHidden", getDefaultTopBarHidden());
26
+        result.topBarTransparent = getBoolean("topBarTransparent", getDefaultTopBarHidden());
26
         result.titleBarTitleColor = getColor("titleBarTitleColor", getDefaultTitleBarColor());
27
         result.titleBarTitleColor = getColor("titleBarTitleColor", getDefaultTitleBarColor());
27
         result.titleBarSubtitleColor = getColor("titleBarSubtitleColor", getDefaultSubtitleBarColor());
28
         result.titleBarSubtitleColor = getColor("titleBarSubtitleColor", getDefaultSubtitleBarColor());
28
         result.titleBarButtonColor = getColor("titleBarButtonColor", getTitleBarButtonColor());
29
         result.titleBarButtonColor = getColor("titleBarButtonColor", getTitleBarButtonColor());
37
 
38
 
38
         // TODO: Uncomment once we support drawBelowTopBar again
39
         // TODO: Uncomment once we support drawBelowTopBar again
39
         //result.drawScreenBelowTopBar = params.getBoolean("drawBelowTopBar", isDefaultScreenBelowTopBar());
40
         //result.drawScreenBelowTopBar = params.getBoolean("drawBelowTopBar", isDefaultScreenBelowTopBar());
40
-        result.drawScreenBelowTopBar = true;
41
+        result.drawScreenBelowTopBar = !result.topBarTransparent;
41
 
42
 
42
         result.bottomTabsHidden = getBoolean("bottomTabsHidden", getDefaultBottomTabsHidden());
43
         result.bottomTabsHidden = getBoolean("bottomTabsHidden", getDefaultBottomTabsHidden());
43
         result.drawScreenAboveBottomTabs = !result.bottomTabsHidden &&
44
         result.drawScreenAboveBottomTabs = !result.bottomTabsHidden &&
142
     }
143
     }
143
 
144
 
144
     private boolean getDefaultTopBarHidden() {
145
     private boolean getDefaultTopBarHidden() {
145
-        return AppStyle.appStyle != null && AppStyle.appStyle.titleBarHidden;
146
+        return AppStyle.appStyle != null && AppStyle.appStyle.topBarTransparent;
146
     }
147
     }
147
 
148
 
148
     private StyleParams.Color getDefaultTopBarColor() {
149
     private StyleParams.Color getDefaultTopBarColor() {

+ 1
- 1
android/app/src/main/java/com/reactnativenavigation/screens/SingleScreen.java View File

24
         if (screenParams.styleParams.drawScreenBelowTopBar) {
24
         if (screenParams.styleParams.drawScreenBelowTopBar) {
25
             params.addRule(BELOW, topBar.getId());
25
             params.addRule(BELOW, topBar.getId());
26
         }
26
         }
27
-        addView(contentView, params);
27
+        addView(contentView, 0, params);
28
     }
28
     }
29
 
29
 
30
     @Override
30
     @Override

+ 13
- 0
android/app/src/main/java/com/reactnativenavigation/views/TopBar.java View File

1
 package com.reactnativenavigation.views;
1
 package com.reactnativenavigation.views;
2
 
2
 
3
 import android.content.Context;
3
 import android.content.Context;
4
+import android.graphics.Color;
5
+import android.os.Build;
4
 import android.support.design.widget.AppBarLayout;
6
 import android.support.design.widget.AppBarLayout;
5
 import android.support.design.widget.TabLayout;
7
 import android.support.design.widget.TabLayout;
6
 
8
 
44
         if (styleParams.topBarColor.hasColor()) {
46
         if (styleParams.topBarColor.hasColor()) {
45
             setBackgroundColor(styleParams.topBarColor.getColor());
47
             setBackgroundColor(styleParams.topBarColor.getColor());
46
         }
48
         }
49
+        if (styleParams.topBarTransparent) {
50
+            setTransparent();
51
+        }
47
         setVisibility(styleParams.topBarHidden ? GONE : VISIBLE);
52
         setVisibility(styleParams.topBarHidden ? GONE : VISIBLE);
48
         titleBar.setStyle(styleParams);
53
         titleBar.setStyle(styleParams);
49
         setTopTabsStyle(styleParams);
54
         setTopTabsStyle(styleParams);
50
     }
55
     }
51
 
56
 
57
+    private void setTransparent() {
58
+        setBackgroundColor(Color.TRANSPARENT);
59
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
60
+            setElevation(0);
61
+            setOutlineProvider(null);
62
+        }
63
+    }
64
+
52
     public void setTitleBarRightButtons(String navigatorEventId, List<TitleBarButtonParams> titleBarButtons) {
65
     public void setTitleBarRightButtons(String navigatorEventId, List<TitleBarButtonParams> titleBarButtons) {
53
         titleBar.setRightButtons(titleBarButtons, navigatorEventId);
66
         titleBar.setRightButtons(titleBarButtons, navigatorEventId);
54
     }
67
     }

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

116
   return {
116
   return {
117
     statusBarColor: originalStyleObject.statusBarColor,
117
     statusBarColor: originalStyleObject.statusBarColor,
118
     topBarColor: originalStyleObject.navBarBackgroundColor,
118
     topBarColor: originalStyleObject.navBarBackgroundColor,
119
+    topBarTransparent: originalStyleObject.navBarTransparent,
119
     titleBarHidden: originalStyleObject.navBarHidden,
120
     titleBarHidden: originalStyleObject.navBarHidden,
120
     titleBarTitleColor: originalStyleObject.navBarTextColor,
121
     titleBarTitleColor: originalStyleObject.navBarTextColor,
121
     titleBarSubtitleColor: originalStyleObject.navBarTextSubtitleColor,
122
     titleBarSubtitleColor: originalStyleObject.navBarTextSubtitleColor,