React Navigation; use image in header?

Viewed 54351

I'm using react navigation in a react native project and I want to customize the header with an image.

For a color I can use simple styling, but since react native doesn't support background images I need a different solution.

3 Answers

According to the official docs of react-navigation v5, it can be implemented as follows:

https://reactnavigation.org/docs/headers/#replacing-the-title-with-a-custom-component

<Stack.Navigator>
  <Stack.Screen
    name="Home"
    component={HomeScreen}
    // title: 'App Name'
    options={{ 
     headerTitle: (props) => ( // App Logo
      <Image
        style={{ width: 200, height: 50 }}
        source={require('../assets/images/app-logo-1.png')}
        resizeMode='contain'
      />
    ),
    headerTitleStyle: { flex: 1, textAlign: 'center' },
    }}
  />
</Stack.Navigator>

Update for React Navigation v5! (making this post for future references)

For react navigation 5, I found this solution.

In StackNavigator.js class you can set a different image for each page (Stack.Screen):

<Stack.Screen 
    name='Home' 
    component={HomeScreen} 
    options={{ 
      title: <Image style={{ width: 250, height: 50 }}
      source = require('../images/yourimage.png')}/> 
    }}
 />

Then, you must adjust width, height, and position of the image, but it works! I think it's the simpliest way. Here's the output (yes, it's my image, before adjustments).

enter image description here

Don't forget to import Image!

import { Image } from 'react-native'
Related