ソースを参照

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

Guy Carmeli 8 年 前
コミット
90dae5ec63

+ 9
- 8
android/app/src/main/java/com/reactnativenavigation/screens/Screen.java ファイルの表示

@@ -30,16 +30,22 @@ public abstract class Screen extends RelativeLayout {
30 30
     private final LeftButtonOnClickListener leftButtonOnClickListener;
31 31
     private VisibilityAnimator topBarVisibilityAnimator;
32 32
     private ScreenAnimator screenAnimator;
33
+    private final StyleParams styleParams;
33 34
 
34 35
     public Screen(AppCompatActivity activity, ScreenParams screenParams, LeftButtonOnClickListener leftButtonOnClickListener) {
35 36
         super(activity);
36 37
         this.activity = activity;
37 38
         this.screenParams = screenParams;
39
+        styleParams = screenParams.styleParams;
38 40
         this.leftButtonOnClickListener = leftButtonOnClickListener;
39
-
40 41
         screenAnimator = new ScreenAnimator(this);
41 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 51
     private void createViews() {
@@ -83,12 +89,6 @@ public abstract class Screen extends RelativeLayout {
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 92
     @TargetApi(Build.VERSION_CODES.LOLLIPOP)
93 93
     private void setStatusBarColor(StyleParams.Color statusBarColor) {
94 94
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return;
@@ -166,6 +166,7 @@ public abstract class Screen extends RelativeLayout {
166 166
     }
167 167
 
168 168
     public void show(boolean animated, Runnable onAnimationEnd) {
169
+        setStyle();
169 170
         screenAnimator.show(animated, onAnimationEnd);
170 171
     }
171 172
 

+ 2
- 0
android/app/src/main/java/com/reactnativenavigation/screens/ScreenStack.java ファイルの表示

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