Browse Source

Setup Toolbar after it's measured

Since Toolbar icons' height is set according to Toolbar height,
We need to ensure the call to `setupToolbar` from `onCreate` is
called after the Toolbar is measured.
Guy Carmeli 8 years ago
parent
commit
3960f68af5

+ 9
- 2
android/app/src/main/java/com/reactnativenavigation/activities/BottomTabActivity.java View File

@@ -52,11 +52,18 @@ public class BottomTabActivity extends BaseReactActivity implements AHBottomNavi
52 52
         mBottomNavigation = (AHBottomNavigation) findViewById(R.id.bottom_tab_bar);
53 53
         mContentFrame = (FrameLayout) findViewById(R.id.contentFrame);
54 54
 
55
-        ArrayList<Screen> screens = (ArrayList<Screen>) getIntent().getSerializableExtra(EXTRA_SCREENS);
55
+        final ArrayList<Screen> screens = (ArrayList<Screen>) getIntent().getSerializableExtra(EXTRA_SCREENS);
56 56
         mBottomNavigation.setForceTint(true);
57
-        setupToolbar(screens);
58 57
         setupTabs(getIntent().getExtras());
59 58
         setupPages(screens);
59
+
60
+        // Setup Toolbar after it's measured since icon height is dependent on Toolbar height
61
+        mContentFrame.post(new Runnable() {
62
+            @Override
63
+            public void run() {
64
+                setupToolbar(screens);
65
+            }
66
+        });
60 67
     }
61 68
 
62 69
     private void setupPages(ArrayList<Screen> screens) {

+ 8
- 1
android/app/src/main/java/com/reactnativenavigation/activities/SingleScreenActivity.java View File

@@ -28,13 +28,20 @@ public class SingleScreenActivity extends BaseReactActivity {
28 28
 
29 29
         Screen screen = (Screen) getIntent().getSerializableExtra(EXTRA_SCREEN);
30 30
         mNavigatorId = screen.navigatorId;
31
-        setupToolbar(screen);
32 31
 
33 32
         mScreenStack = new ScreenStack(this);
34 33
         FrameLayout contentFrame = (FrameLayout) findViewById(R.id.contentFrame);
35 34
         assert contentFrame != null;
36 35
         contentFrame.addView(mScreenStack);
37 36
         mScreenStack.push(screen);
37
+
38
+        // Setup Toolbar after it's measured since icon height is dependent on Toolbar height
39
+        contentFrame.post(new Runnable() {
40
+            @Override
41
+            public void run() {
42
+                setupToolbar(getCurrentScreen());
43
+            }
44
+        });
38 45
     }
39 46
 
40 47
     protected void setupToolbar(Screen screen) {