A Tab for the shifting bottom navigation bar, implemented according to the Bottom navigation specs. In its inactive state, only the icon is visible. In its active state, the tab's label is also visible, and the tab is wider.
To enable a nice transition between both states, the BottomNavigation
needs to have the useLayoutAnimation
prop set to true
.
The ShiftingTab is basically a FullTab with predefined style- and animation-props.
Type: Number
The duration of the animation between active and inactive.
Default: 160
Type: Function
The easing function of the animation between active and inactive.
Default: easings.easeInOut
Type: Function
Defines the animation of the badge from active to inactive. Receives the
animation progress (AnimatedValue
between 0 and 1), needs to return a
style object.
See also: https://facebook.github.io/react-native/docs/animations.html#interpolation
Default:
progress => ({
transform: [
{
scale: progress.interpolate({
inputRange: [0, 1],
outputRange: [0.9, 1]
})
},
{
translateY: progress.interpolate({
inputRange: [0, 1],
outputRange: Platform.select({ ios: [9, 4], android: [6, 0] })
})
}
]
})
Type: ViewPropTypes.style
Extends the style of the badge's wrapping View.
Type: Function
Defines the animation of the icon from active to inactive. Receives the animation progress (0-1), needs to return a style object. See also: https://facebook.github.io/react-native/docs/animations.html#interpolation
Default:
progress => ({
transform: [
{
translateY: progress.interpolate({
inputRange: [0, 1],
outputRange: [7, 0]
})
}
],
opacity: progress.interpolate({
inputRange: [0, 1],
outputRange: [0.8, 1]
})
})
Required.
Type: Boolean
If true
, the tab is visually active.
Required.
Type: String
The text of the label.
Type: Function
Defines the animation of the label from active to inactive. Receives the
animation progress (AnimatedValue
between 0 and 1), needs to return a
style object.
See also: https://facebook.github.io/react-native/docs/animations.html#interpolation
Default:
progress => ({
opacity: progress.interpolate({
inputRange: [0, 1],
outputRange: [0, 1]
})
})
Type: Object
Useful to add more props to the Text component of the label.
Default: { numberOfLines: 1 }
Type: Text.propTypes.style
Extends the style of the label.
Type: Function
The render prop to render the badge. Arguments: ({ isActive })
Required.
Type: Function
The render prop to render the icon. Arguments: ({ isActive })
Type: Boolean
If true
, the badge will be rendered.
Default: false
Type: ViewPropTypes.style
Extends the style of the tab's view.