diff --git a/android/app/src/main/java/com/reactnativenavigation/activities/BottomTabActivity.java b/android/app/src/main/java/com/reactnativenavigation/activities/BottomTabActivity.java index 5020a90c55e..1b159e2ba1d 100644 --- a/android/app/src/main/java/com/reactnativenavigation/activities/BottomTabActivity.java +++ b/android/app/src/main/java/com/reactnativenavigation/activities/BottomTabActivity.java @@ -46,14 +46,13 @@ public class BottomTabActivity extends BaseReactActivity implements AHBottomNavi protected void handleOnCreate() { mReactInstanceManager = RctManager.getInstance().getReactInstanceManager(); - setContentView(R.layout.bottom_tab_activity); - mToolbar = (RnnToolBar) findViewById(R.id.toolbar); + ArrayList screens = (ArrayList) getIntent().getSerializableExtra(EXTRA_SCREENS); + showHideToolbar(screens); + mBottomNavigation = (AHBottomNavigation) findViewById(R.id.bottom_tab_bar); mContentFrame = (FrameLayout) findViewById(R.id.contentFrame); - ArrayList screens = (ArrayList) getIntent().getSerializableExtra(EXTRA_SCREENS); mBottomNavigation.setForceTint(true); - setupToolbar(screens); setupTabs(getIntent().getExtras()); setupPages(screens); } @@ -70,10 +69,23 @@ private void setupToolbar(ArrayList screens) { setSupportActionBar(mToolbar); } + private void showHideToolbar(ArrayList screens) { + Screen initialScreen = screens.get(0); + if (initialScreen.toolBarHidden != null && initialScreen.toolBarHidden) { + setContentView(R.layout.bottom_tab_activity_without_toolbar); + } else { + setContentView(R.layout.bottom_tab_activity); + mToolbar = (RnnToolBar) findViewById(R.id.toolbar); + setupToolbar(screens); + } + } + @Override public void setNavigationStyle(Screen screen) { super.setNavigationStyle(screen); - mToolbar.setTitle(screen.title); + if (mToolbar != null) { + mToolbar.setTitle(screen.title); + } } private void setupTabs(Bundle style) { diff --git a/android/app/src/main/java/com/reactnativenavigation/activities/SingleScreenActivity.java b/android/app/src/main/java/com/reactnativenavigation/activities/SingleScreenActivity.java index 6b1f05691e6..4eb25bdbf7b 100644 --- a/android/app/src/main/java/com/reactnativenavigation/activities/SingleScreenActivity.java +++ b/android/app/src/main/java/com/reactnativenavigation/activities/SingleScreenActivity.java @@ -22,13 +22,17 @@ public class SingleScreenActivity extends BaseReactActivity { protected void handleOnCreate() { mReactInstanceManager = RctManager.getInstance().getReactInstanceManager(); - setContentView(R.layout.single_screen_activity); - mToolbar = (RnnToolBar) findViewById(R.id.toolbar); - Screen screen = (Screen) getIntent().getSerializableExtra(EXTRA_SCREEN); mNavigatorId = screen.navigatorId; - setupToolbar(screen); - + + if (screen.toolBarHidden != null && screen.toolBarHidden) { + setContentView(R.layout.single_screen_activity_without_toolbar); + } else { + setContentView(R.layout.single_screen_activity); + mToolbar = (RnnToolBar) findViewById(R.id.toolbar); + setupToolbar(screen); + } + mScreenStack = new ScreenStack(this); FrameLayout contentFrame = (FrameLayout) findViewById(R.id.contentFrame); contentFrame.addView(mScreenStack); diff --git a/android/app/src/main/java/com/reactnativenavigation/activities/TabActivity.java b/android/app/src/main/java/com/reactnativenavigation/activities/TabActivity.java index 09f06b7f74b..e9938b4969a 100644 --- a/android/app/src/main/java/com/reactnativenavigation/activities/TabActivity.java +++ b/android/app/src/main/java/com/reactnativenavigation/activities/TabActivity.java @@ -26,17 +26,16 @@ public class TabActivity extends BaseReactActivity { protected void handleOnCreate() { mReactInstanceManager = RctManager.getInstance().getReactInstanceManager(); - setContentView(R.layout.tab_activity); - mToolbar = (RnnToolBar) findViewById(R.id.toolbar); + ArrayList screens = (ArrayList) getIntent().getSerializableExtra(EXTRA_SCREENS); + Screen initialScreen = screens.get(0); + showHideToolbar(initialScreen); + mTabLayout = (RnnTabLayout) findViewById(R.id.tabLayout); mViewPager = (ViewPager) findViewById(R.id.viewPager); - ArrayList screens = (ArrayList) getIntent().getSerializableExtra(EXTRA_SCREENS); - - setupToolbar(screens); setupViewPager(screens); } - + private void setupToolbar(ArrayList screens) { Screen initialScreen = screens.get(0); setNavigationStyle(initialScreen); @@ -46,6 +45,17 @@ private void setupToolbar(ArrayList screens) { setSupportActionBar(mToolbar); } + private void showHideToolbar(Screen screen) { + if (screen.toolBarHidden != null && screen.toolBarHidden) { + setContentView(R.layout.bottom_tab_activity_without_toolbar); + } else { + ArrayList screens = (ArrayList) getIntent().getSerializableExtra(EXTRA_SCREENS); + setContentView(R.layout.bottom_tab_activity); + mToolbar = (RnnToolBar) findViewById(R.id.toolbar); + setupToolbar(screens); + } + } + @Override public void setNavigationStyle(Screen screen) { super.setNavigationStyle(screen); diff --git a/android/app/src/main/java/com/reactnativenavigation/core/objects/JsonObject.java b/android/app/src/main/java/com/reactnativenavigation/core/objects/JsonObject.java index cedbeaa9a8b..f2c65ed0eba 100644 --- a/android/app/src/main/java/com/reactnativenavigation/core/objects/JsonObject.java +++ b/android/app/src/main/java/com/reactnativenavigation/core/objects/JsonObject.java @@ -28,4 +28,8 @@ protected ReadableMap getMap(ReadableMap map, String key) { protected Integer getColor(ReadableMap map, String key) { return map.hasKey(key) ? Color.parseColor(map.getString(key)) : null; } + + protected Boolean getBoolean(ReadableMap map, String key) { + return map.hasKey(key) ? map.getBoolean(key) : null; + } } diff --git a/android/app/src/main/java/com/reactnativenavigation/core/objects/Screen.java b/android/app/src/main/java/com/reactnativenavigation/core/objects/Screen.java index 5777530d550..8170e3d0711 100644 --- a/android/app/src/main/java/com/reactnativenavigation/core/objects/Screen.java +++ b/android/app/src/main/java/com/reactnativenavigation/core/objects/Screen.java @@ -34,6 +34,7 @@ public class Screen extends JsonObject implements Serializable { private static final String KEY_TOOL_BAR_STYLE = "navigatorStyle"; private static final String KEY_STATUS_BAR_COLOR = "statusBarColor"; private static final String KEY_TOOL_BAR_COLOR = "toolBarColor"; + private static final String KEY_TOOL_BAR_HIDDEN = "toolBarHidden"; private static final String KEY_NAVIGATION_BAR_COLOR = "navigationBarColor"; private static final String KEY_BUTTONS_TINT_COLOR = "buttonsTint"; private static final String KEY_TITLE_COLOR = "titleColor"; @@ -54,6 +55,7 @@ public class Screen extends JsonObject implements Serializable { // Navigation styling @Nullable @ColorInt public Integer toolBarColor; + @Nullable public Boolean toolBarHidden; @Nullable @ColorInt public Integer statusBarColor; @Nullable @ColorInt public Integer navigationBarColor; @Nullable @ColorInt public Integer buttonsTintColor; @@ -105,6 +107,7 @@ public void setToolbarStyle(ReadableMap screen) { ReadableMap style = getMap(screen, KEY_TOOL_BAR_STYLE); if (style != null) { toolBarColor = getColor(style, KEY_TOOL_BAR_COLOR); + toolBarHidden = getBoolean(style, KEY_TOOL_BAR_HIDDEN); statusBarColor = getColor(style, KEY_STATUS_BAR_COLOR); navigationBarColor = getColor(style, KEY_NAVIGATION_BAR_COLOR); buttonsTintColor = getColor(style, KEY_BUTTONS_TINT_COLOR); diff --git a/android/app/src/main/java/com/reactnativenavigation/modal/RnnModal.java b/android/app/src/main/java/com/reactnativenavigation/modal/RnnModal.java index 5054862b1d9..c04a064d011 100644 --- a/android/app/src/main/java/com/reactnativenavigation/modal/RnnModal.java +++ b/android/app/src/main/java/com/reactnativenavigation/modal/RnnModal.java @@ -40,14 +40,20 @@ public RnnModal(BaseReactActivity context, Screen screen) { @SuppressLint("InflateParams") private void init(final Context context) { requestWindowFeature(Window.FEATURE_NO_TITLE); - mContentView = LayoutInflater.from(context).inflate(R.layout.modal_layout, null, false); - RnnToolBar toolBar = (RnnToolBar) mContentView.findViewById(R.id.toolbar); + + if (mScreen.toolBarHidden != null && mScreen.toolBarHidden) { + mContentView = LayoutInflater.from(context).inflate(R.layout.modal_layout_without_toolbar, null, false); + } else { + mContentView = LayoutInflater.from(context).inflate(R.layout.modal_layout, null, false); + + RnnToolBar toolBar = (RnnToolBar) mContentView.findViewById(R.id.toolbar); + toolBar.setStyle(mScreen); + toolBar.setTitle(mScreen.title); + toolBar.setupToolbarButtonsAsync(mScreen); + } + mScreenStack = (ScreenStack) mContentView.findViewById(R.id.screenStack); - setContentView(mContentView); - toolBar.setStyle(mScreen); - toolBar.setTitle(mScreen.title); - toolBar.setupToolbarButtonsAsync(mScreen); mScreenStack.push(mScreen, new RctView.OnDisplayedListener() { @Override public void onDisplayed() { diff --git a/android/app/src/main/res/layout/bottom_tab_activity_without_toolbar.xml b/android/app/src/main/res/layout/bottom_tab_activity_without_toolbar.xml new file mode 100644 index 00000000000..ee5bb7931aa --- /dev/null +++ b/android/app/src/main/res/layout/bottom_tab_activity_without_toolbar.xml @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/modal_layout_without_toolbar.xml b/android/app/src/main/res/layout/modal_layout_without_toolbar.xml new file mode 100644 index 00000000000..d2fd4eed6bc --- /dev/null +++ b/android/app/src/main/res/layout/modal_layout_without_toolbar.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/single_screen_activity_without_toolbar.xml b/android/app/src/main/res/layout/single_screen_activity_without_toolbar.xml new file mode 100644 index 00000000000..22fe6287673 --- /dev/null +++ b/android/app/src/main/res/layout/single_screen_activity_without_toolbar.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/tab_activity_without_toolbar.xml b/android/app/src/main/res/layout/tab_activity_without_toolbar.xml new file mode 100644 index 00000000000..cf8b5cbc585 --- /dev/null +++ b/android/app/src/main/res/layout/tab_activity_without_toolbar.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file