Skip to main content

Header

Headers are navigation components that display information and actions relating to the current screen. This component is exported in this library and works well with the other scroll containers this library provides.

Props

showNavBar

An animated value between 0 and 1 that indicates whether the header's children should be visible.

headerStyle

An optional style object to apply to the header's root container.

Note: Do not apply an absolute position to this container. Instead, use the absoluteHeader prop on any of the scroll containers to absolutely position the header.

headerLeft

An optional React element to display on the left side of the header.

headerRight

An optional React element to display on the right side of the header.

headerCenter

An optional React element to display in the center of the header.

headerLeftStyle

An optional style object to apply to the header's left container.

headerRightStyle

An optional style object to apply to the header's right container.

headerCenterStyle

An optional style object to apply to the header's center container.

headerLeftFadesIn

An optional boolean to indicate whether the header's left container should fade in when the showNavBar is 1.

headerRightFadesIn

An optional boolean to indicate whether the header's right container should fade in when the showNavBar is 1.

headerCenterFadesIn

An optional boolean to indicate whether the header's center container should fade in when the showNavBar is 1.

ignoreTopSafeArea

An optional boolean to indicate whether the header should ignore the top safe area. This is useful when you want to display the header behind the status bar. Defaults to false. If you are rendering this header in an iOS modal, you should set this to true.

noBottomBorder

An optional boolean to indicate whether the header should not have a bottom border. Defaults to false.

initialBorderColor

An optional color to use for the header's bottom border color initially. When the user scrolls down, the color will animate to the supplied borderColor. Defaults to #E5E5E5.

borderColor

An optional color to use for the header's bottom border. Defaults to #E5E5E5.

borderWidth

An optional width to use for the header's bottom border. Defaults to StyleSheet.hairlineWidth.

SurfaceComponent

An optional component that can act as the surface of the header. Please ensure that the styling applied to the component includes StyleSheet.absoluteFill or StyleSheet.absoluteFillObject to ensure that the surface component fills the header.

Note: If you want to use a BlurView as the surface and want the content below to be seen under the surface, make sure you set absoluteHeader to true on the scroll container.

Example

The following example will make the header have a cyan background when the user scrolls the scroll container up:

const SURFACE_BG_COLOR = 'cyan';

const HeaderSurface: React.FC<SurfaceComponentProps> = ({ showNavBar }) => (
<FadingView
opacity={showNavBar}
// StyleSheet.absoluteFill is needed to ensure that the component fills up the header.
style={[StyleSheet.absoluteFill, { backgroundColor: SURFACE_BG_COLOR }]}
/>
);

const HeaderComponent: React.FC<ScrollHeaderProps> = ({ showNavBar }) => {
const navigation = useNavigation();
const onPressProfile = () => navigation.navigate('Profile');

return (
<Header
showNavBar={showNavBar}
// ...
SurfaceComponent={HeaderSurface} // <- usage
/>
);
};

See the example application's Header SurfaceComponent Interpolation screen in for a working example.