Browse Source

Set correct screen style after pop and when screen is first displayed

Guy Carmeli 8 years ago
parent
commit
90dae5ec63

+ 9
- 8
android/app/src/main/java/com/reactnativenavigation/screens/Screen.java View File

30
     private final LeftButtonOnClickListener leftButtonOnClickListener;
30
     private final LeftButtonOnClickListener leftButtonOnClickListener;
31
     private VisibilityAnimator topBarVisibilityAnimator;
31
     private VisibilityAnimator topBarVisibilityAnimator;
32
     private ScreenAnimator screenAnimator;
32
     private ScreenAnimator screenAnimator;
33
+    private final StyleParams styleParams;
33
 
34
 
34
     public Screen(AppCompatActivity activity, ScreenParams screenParams, LeftButtonOnClickListener leftButtonOnClickListener) {
35
     public Screen(AppCompatActivity activity, ScreenParams screenParams, LeftButtonOnClickListener leftButtonOnClickListener) {
35
         super(activity);
36
         super(activity);
36
         this.activity = activity;
37
         this.activity = activity;
37
         this.screenParams = screenParams;
38
         this.screenParams = screenParams;
39
+        styleParams = screenParams.styleParams;
38
         this.leftButtonOnClickListener = leftButtonOnClickListener;
40
         this.leftButtonOnClickListener = leftButtonOnClickListener;
39
-
40
         screenAnimator = new ScreenAnimator(this);
41
         screenAnimator = new ScreenAnimator(this);
41
         createViews();
42
         createViews();
42
-        setStyle(screenParams.styleParams);
43
+    }
44
+
45
+    public void setStyle() {
46
+        setStatusBarColor(styleParams.statusBarColor);
47
+        setNavigationBarColor(styleParams.navigationBarColor);
48
+        topBar.setStyle(styleParams);
43
     }
49
     }
44
 
50
 
45
     private void createViews() {
51
     private void createViews() {
83
         });
89
         });
84
     }
90
     }
85
 
91
 
86
-    private void setStyle(StyleParams styleParams) {
87
-        setStatusBarColor(styleParams.statusBarColor);
88
-        setNavigationBarColor(styleParams.navigationBarColor);
89
-        topBar.setStyle(styleParams);
90
-    }
91
-
92
     @TargetApi(Build.VERSION_CODES.LOLLIPOP)
92
     @TargetApi(Build.VERSION_CODES.LOLLIPOP)
93
     private void setStatusBarColor(StyleParams.Color statusBarColor) {
93
     private void setStatusBarColor(StyleParams.Color statusBarColor) {
94
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return;
94
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return;
166
     }
166
     }
167
 
167
 
168
     public void show(boolean animated, Runnable onAnimationEnd) {
168
     public void show(boolean animated, Runnable onAnimationEnd) {
169
+        setStyle();
169
         screenAnimator.show(animated, onAnimationEnd);
170
         screenAnimator.show(animated, onAnimationEnd);
170
     }
171
     }
171
 
172
 

+ 2
- 0
android/app/src/main/java/com/reactnativenavigation/screens/ScreenStack.java View File

115
 
115
 
116
     private void swapScreens(boolean animated, final Screen toRemove, Screen previous, OnScreenPop onScreenPop) {
116
     private void swapScreens(boolean animated, final Screen toRemove, Screen previous, OnScreenPop onScreenPop) {
117
         readdPrevious(previous);
117
         readdPrevious(previous);
118
+        previous.setStyle();
118
         toRemove.hide(animated, new Runnable() {
119
         toRemove.hide(animated, new Runnable() {
119
             @Override
120
             @Override
120
             public void run() {
121
             public void run() {
215
 
216
 
216
     public void show() {
217
     public void show() {
217
         isStackVisible = true;
218
         isStackVisible = true;
219
+        stack.peek().setStyle();
218
         stack.peek().setVisibility(View.VISIBLE);
220
         stack.peek().setVisibility(View.VISIBLE);
219
     }
221
     }
220
 
222