diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 11a537e501d..fc134f2d956 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -11,6 +11,7 @@ - Options - [NavigationOptions](/docs/options/NavigationOptions) - [TopBar](/docs/options/TopBar) + - [TopTab](/docs/options/TopTab) - [Button](/docs/options/Button) - [BottomTabs](/docs/options/BottomTabs) - [BottomTab](/docs/options/BottomTab) diff --git a/docs/docs/options/TopTab.md b/docs/docs/options/TopTab.md new file mode 100644 index 00000000000..9f97227e888 --- /dev/null +++ b/docs/docs/options/TopTab.md @@ -0,0 +1,9 @@ +

TopTab

+ +**Properties** + +| Name | Type | Description | +| --- | --- | --- | +| title | string | The tab's title in the TopTabs view | +| titleFontFamily | string | Change the tab's title font family | + diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/parse/LayoutFactory.java b/lib/android/app/src/main/java/com/reactnativenavigation/parse/LayoutFactory.java index de1372adcb3..f509012867f 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/parse/LayoutFactory.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/parse/LayoutFactory.java @@ -4,6 +4,7 @@ import com.facebook.react.ReactInstanceManager; import com.reactnativenavigation.react.ReactContainerViewCreator; +import com.reactnativenavigation.utils.TypefaceLoader; import com.reactnativenavigation.viewcontrollers.BottomTabsController; import com.reactnativenavigation.viewcontrollers.ContainerViewController; import com.reactnativenavigation.viewcontrollers.SideMenuController; @@ -22,11 +23,13 @@ public class LayoutFactory { private final Activity activity; private final ReactInstanceManager reactInstanceManager; private NavigationOptions defaultOptions; + private final TypefaceLoader typefaceManager; public LayoutFactory(Activity activity, final ReactInstanceManager reactInstanceManager, NavigationOptions defaultOptions) { this.activity = activity; this.reactInstanceManager = reactInstanceManager; this.defaultOptions = defaultOptions; + typefaceManager = new TypefaceLoader(activity); } public ViewController create(final LayoutNode node) { @@ -92,7 +95,7 @@ private ViewController createSideMenuRight(LayoutNode node) { private ViewController createContainer(LayoutNode node) { String id = node.id; String name = node.data.optString("name"); - NavigationOptions navigationOptions = NavigationOptions.parse(node.data.optJSONObject("navigationOptions"), defaultOptions); + NavigationOptions navigationOptions = NavigationOptions.parse(typefaceManager, node.data.optJSONObject("navigationOptions"), defaultOptions); return new ContainerViewController(activity, id, name, @@ -128,8 +131,10 @@ private ViewController createDialogContainer(LayoutNode node) { private ViewController createTopTabs(LayoutNode node) { final List tabs = new ArrayList<>(); - for (LayoutNode child : node.children) { - tabs.add((TopTabController) create(child)); + for (int i = 0; i < node.children.size(); i++) { + TopTabController tabController = (TopTabController) create(node.children.get(i)); + tabController.setTabIndex(i); + tabs.add(tabController); } return new TopTabsController(activity, node.id, tabs); } @@ -137,7 +142,7 @@ private ViewController createTopTabs(LayoutNode node) { private ViewController createTopTab(LayoutNode node) { String id = node.id; String name = node.data.optString("name"); - NavigationOptions navigationOptions = NavigationOptions.parse(node.data.optJSONObject("navigationOptions"), defaultOptions); + NavigationOptions navigationOptions = NavigationOptions.parse(typefaceManager, node.getNavigationOptions(), defaultOptions); return new TopTabController(activity, id, name, diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/parse/LayoutNode.java b/lib/android/app/src/main/java/com/reactnativenavigation/parse/LayoutNode.java index 8ffabd77a96..c5539912f93 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/parse/LayoutNode.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/parse/LayoutNode.java @@ -35,4 +35,8 @@ public enum Type { this.data = data; this.children = children; } + + JSONObject getNavigationOptions() { + return data.optJSONObject("navigationOptions"); + } } diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/parse/NavigationOptions.java b/lib/android/app/src/main/java/com/reactnativenavigation/parse/NavigationOptions.java index 5faf803ee8d..dcd26112e8e 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/parse/NavigationOptions.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/parse/NavigationOptions.java @@ -2,6 +2,8 @@ import android.support.annotation.NonNull; +import com.reactnativenavigation.utils.TypefaceLoader; + import org.json.JSONObject; import java.util.ArrayList; @@ -22,18 +24,18 @@ static BooleanOptions parse(String value) { } @NonNull - public static NavigationOptions parse(JSONObject json) { - return parse(json, new NavigationOptions()); + public static NavigationOptions parse(TypefaceLoader typefaceManager, JSONObject json) { + return parse(typefaceManager, json, new NavigationOptions()); } @NonNull - public static NavigationOptions parse(JSONObject json, @NonNull NavigationOptions defaultOptions) { + public static NavigationOptions parse(TypefaceLoader typefaceManager, JSONObject json, @NonNull NavigationOptions defaultOptions) { NavigationOptions result = new NavigationOptions(); if (json == null) return result; result.topBarOptions = TopBarOptions.parse(json.optJSONObject("topBar")); result.topTabsOptions = TopTabsOptions.parse(json.optJSONObject("topTabs")); - result.topTabOptions = TopTabOptions.parse(json.optJSONObject("topTab")); + result.topTabOptions = TopTabOptions.parse(typefaceManager, json.optJSONObject("topTab")); result.bottomTabsOptions = BottomTabsOptions.parse(json.optJSONObject("bottomTabs")); result.rightButtons = Button.parseJsonArray(json.optJSONArray("rightButtons")); result.leftButtons = Button.parseJsonArray(json.optJSONArray("leftButtons")); @@ -42,7 +44,7 @@ public static NavigationOptions parse(JSONObject json, @NonNull NavigationOption } @NonNull public TopBarOptions topBarOptions = new TopBarOptions(); - @NonNull private TopTabsOptions topTabsOptions = new TopTabsOptions(); + @NonNull public TopTabsOptions topTabsOptions = new TopTabsOptions(); @NonNull public TopTabOptions topTabOptions = new TopTabOptions(); @NonNull public BottomTabsOptions bottomTabsOptions = new BottomTabsOptions(); public ArrayList