All Projects → ptomasroos → React Native Scrollable Tab View

ptomasroos / React Native Scrollable Tab View

Tabbed navigation that you can swipe between, each tab can have its own ScrollView and maintain its own scroll position between swipes. Pleasantly animated. Customizable tab bar

Programming Languages

javascript
184084 projects - #8 most used programming language
objective c
16641 projects - #2 most used programming language
Starlark
911 projects
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to React Native Scrollable Tab View

react-native-segment-control
Swipeable SegmentedControl component for React Native apps
Stars: ✭ 21 (-99.69%)
Mutual labels:  tabs, swipe, animated
React Native Head Tab View
Add collapsible headers to your tab-view components.
Stars: ✭ 171 (-97.48%)
Mutual labels:  swipe, tabs
react-native-viewpager-carousel
a flexible viewpager library with carousel functionality
Stars: ✭ 39 (-99.43%)
Mutual labels:  tabs, swipe
React Native Tab View
A cross-platform Tab View component for React Native
Stars: ✭ 4,742 (-30.1%)
Mutual labels:  swipe, tabs
Jeelizweboji
JavaScript/WebGL real-time face tracking and expression detection library. Build your own emoticons animated in real time in the browser! SVG and THREE.js integration demos are provided.
Stars: ✭ 835 (-87.69%)
Mutual labels:  animated
Swipecellkit
A swipeable UITableViewCell or UICollectionViewCell with support for:
Stars: ✭ 5,745 (-15.32%)
Mutual labels:  swipe
T Scroll
A modern reveal-on-scroll library with useful options and animations. (Animate Elements On Reveal)
Stars: ✭ 642 (-90.54%)
Mutual labels:  animated
Jquery.localscroll
Animated anchor navigation made easy with jQuery
Stars: ✭ 624 (-90.8%)
Mutual labels:  animated
Randomix
🎲 An open source app to choose randomly between numbers, answers, options and so on.
Stars: ✭ 24 (-99.65%)
Mutual labels:  animated
Aiflatswitch
Nicely animated flat design switch alternative to UISwitch
Stars: ✭ 904 (-86.67%)
Mutual labels:  animated
Dypiechartview
Animated Pie Chart using Custom CALayer.
Stars: ✭ 5 (-99.93%)
Mutual labels:  animated
Swiper
Most modern mobile touch slider with hardware accelerated transitions
Stars: ✭ 29,519 (+335.13%)
Mutual labels:  swipe
Numericaltextentry
An iOS library for beautiful number entry fields. iPad friendly. Written in Swift.
Stars: ✭ 16 (-99.76%)
Mutual labels:  animated
Recyclerviewhelper
📃 [Android Library] Giving powers to RecyclerView
Stars: ✭ 643 (-90.52%)
Mutual labels:  swipe
Christmas Tree
ASCII christmas-tree with animations for 256 colored terminals
Stars: ✭ 23 (-99.66%)
Mutual labels:  animated
Discretescrollview
A scrollable list of items that centers the current element and provides easy-to-use APIs for cool item animations.
Stars: ✭ 5,533 (-18.44%)
Mutual labels:  swipe
Splide
Splide is a lightweight, powerful and flexible slider and carousel, written in pure JavaScript without any dependencies.
Stars: ✭ 786 (-88.41%)
Mutual labels:  swipe
React Native Animated Tabbar
A 60FPS animated tab bar with a variety of cool animation presets 😎
Stars: ✭ 890 (-86.88%)
Mutual labels:  animated
Cariocamenu
The fastest zero-tap iOS menu.
Stars: ✭ 785 (-88.43%)
Mutual labels:  swipe
Labelsview
Android的标签列表控件。可以设置标签的选中效果。 可以设置标签的选中类型:不可选中、单选、限数量多选和不限数量多选等, 并支持设置必选项、单行显示、最大显示行数等功能。
Stars: ✭ 777 (-88.55%)
Mutual labels:  tabs

react-native-scrollable-tab-view

npm version

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

Add it to your project

  1. Run npm install react-native-scrollable-tab-view --save
  2. var ScrollableTabView = require('react-native-scrollable-tab-view');

Demo

Run this example

Basic usage

var ScrollableTabView = require('react-native-scrollable-tab-view');

var App = React.createClass({
  render() {
    return (
      <ScrollableTabView>
        <ReactPage tabLabel="React" />
        <FlowPage tabLabel="Flow" />
        <JestPage tabLabel="Jest" />
      </ScrollableTabView>
    );
  }
});

Injecting a custom tab bar

Suppose we had a custom tab bar called CustomTabBar, we would inject it into our ScrollableTabView like this:

var ScrollableTabView = require('react-native-scrollable-tab-view');
var CustomTabBar = require('./CustomTabBar');

var App = React.createClass({
  render() {
    return (
      <ScrollableTabView renderTabBar={() => <CustomTabBar someProp={'here'} />}>
        <ReactPage tabLabel="React" />
        <FlowPage tabLabel="Flow" />
        <JestPage tabLabel="Jest" />
      </ScrollableTabView>
    );
  }
});

To start you can just copy DefaultTabBar.

Examples

SimpleExample.

ScrollableTabsExample.

OverlayExample.

FacebookExample.

Props

  • renderTabBar (Function:ReactComponent) - accept 1 argument props and should return a component to use as the tab bar. The component has goToPage, tabs, activeTab and ref added to the props, and should implement setAnimationValue to be able to animate itself along with the tab content. You can manually pass the props 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 selected
  • onScroll (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 tab(can be buggy see #126
  • children (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.
  • prerenderingSiblingsNumber (Integer) - pre-render nearby # sibling, Infinity === render all the siblings, default to 0 === render current page.

Contribution

Issues are welcome. Please add a screenshot of bug and code snippet. Quickest way to solve issue is to reproduce it on one of the examples.

Pull requests are welcome. If you want to change API or making something big better to create issue and discuss it first. Before submiting PR please run eslint . Also all eslint fixes are welcome.

Please attach video or gif to PR's and issues it is super helpful.

How to make video

How to make gif from video


MIT Licensed

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].