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
         mBottomNavigation = (AHBottomNavigation) findViewById(R.id.bottom_tab_bar);
52
         mBottomNavigation = (AHBottomNavigation) findViewById(R.id.bottom_tab_bar);
53
         mContentFrame = (FrameLayout) findViewById(R.id.contentFrame);
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
         mBottomNavigation.setForceTint(true);
56
         mBottomNavigation.setForceTint(true);
57
-        setupToolbar(screens);
58
         setupTabs(getIntent().getExtras());
57
         setupTabs(getIntent().getExtras());
59
         setupPages(screens);
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
     private void setupPages(ArrayList<Screen> screens) {
69
     private void setupPages(ArrayList<Screen> screens) {

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

28
 
28
 
29
         Screen screen = (Screen) getIntent().getSerializableExtra(EXTRA_SCREEN);
29
         Screen screen = (Screen) getIntent().getSerializableExtra(EXTRA_SCREEN);
30
         mNavigatorId = screen.navigatorId;
30
         mNavigatorId = screen.navigatorId;
31
-        setupToolbar(screen);
32
 
31
 
33
         mScreenStack = new ScreenStack(this);
32
         mScreenStack = new ScreenStack(this);
34
         FrameLayout contentFrame = (FrameLayout) findViewById(R.id.contentFrame);
33
         FrameLayout contentFrame = (FrameLayout) findViewById(R.id.contentFrame);
35
         assert contentFrame != null;
34
         assert contentFrame != null;
36
         contentFrame.addView(mScreenStack);
35
         contentFrame.addView(mScreenStack);
37
         mScreenStack.push(screen);
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
     protected void setupToolbar(Screen screen) {
47
     protected void setupToolbar(Screen screen) {