Collapsing header with tabs for react native
https://snack.expo.io/By0FEomKf
This is probably my favorite navigation pattern on Android, I wish it
were more common on iOS! This is a very simple JavaScript-only
implementation of it for React Native. For more information about how
the animations behind this work, check out the Rebound section of the
React Native Animation Guide
Thanks to ,
https://github.com/skv-headless/react-native-scrollable-tab-view
npm install rn-collapsing-tab-bar --save
var ScrollableTabView = require('rn-collapsing-tab-bar');
var ScrollableTabView = require('rn-collapsing-tab-bar');
var App = React.createClass({
render() {
return (
<ScrollableTabView>
<ReactPage tabLabel="React" ></ReactPage>
<FlowPage tabLabel="Flow" ></FlowPage>
<JestPage tabLabel="Jest" ></JestPage>
</ScrollableTabView>
);
}
});
DEMO
Suppose we had a custom tab bar called CustomTabBar
, we would inject
it into our ScrollableTabView
like this:
var ScrollableTabView = require('rn-collapsing-tab-bar');
var CustomTabBar = require('./CustomTabBar');
var App = React.createClass({
render() {
return (
<ScrollableTabView renderTabBar={() => <CustomTabBar someProp={'here'} ></CustomTabBar>}>
<ReactPage tabLabel="React" ></ReactPage>
<FlowPage tabLabel="Flow" ></FlowPage>
<JestPage tabLabel="Jest" ></JestPage>
</ScrollableTabView>
);
}
});
renderTabBar
(Function:ReactComponent) - accept 1 argument props
and should return a component to use asgoToPage
, tabs
, activeTab
andref
added to the props, and should implement setAnimationValue
toprops
to the TabBar component.tabBarPosition
(String) Defaults to "top"
."bottom"
to position the tab bar below content."overlayTop"
or "overlayBottom"
for a semitransparent tab bar that overlays content. Custom tab bars must consume a style prop on their outer element to support this feature: style={this.props.style}
.onChangeTab
(Function) - function to call when tab changes, should accept 1 argument which is an Object containing two keys: i
: the index of the tab that is selected, ref
: the ref of the tab that is selectedonScroll
(Function) - function to call when the pages are sliding, should accept 1 argument which is an Float number representing the page position in the slide frame.locked
(Bool) - disables horizontal dragging to scroll between tabs, default is false.initialPage
(Integer) - the index of the initially selected tab, defaults to 0 === first tab.page
(Integer) - set selected tabchildren
(ReactComponents) - each top-level child component should have a tabLabel
prop that can be used by the tab bar component to render out the labels. The default tab bar expects it to be a string, but you can use anything you want if you make a custom tab bar.tabBarUnderlineStyle
(View.propTypes.style) - style of the default tab bar’s underline.tabBarBackgroundColor
(String) - color of the default tab bar’s background, defaults to white
tabBarActiveTextColor
(String) - color of the default tab bar’s text when active, defaults to navy
tabBarInactiveTextColor
(String) - color of the default tab bar’s text when inactive, defaults to black
tabBarTextStyle
(Object) - Additional styles to the tab bar’s text. Example: {fontFamily: 'Roboto', fontSize: 15}
style
(View.propTypes.style)contentProps
(Object) - props that are applied to root ScrollView
/ViewPagerAndroid
. Note that overriding defaults set by the library may break functionality; see the source for details.scrollWithoutAnimation
(Bool) - on tab press change tab without animation.scrollToTopAnimation
(Bool) - setting animation scroll to top when user change tab.prerenderingSiblingsNumber
(Integer) - pre-render nearby # sibling, Infinity
=== render all the siblings, default to 0 === render current page.MIT Licensed