react native
play

React Native Navigation Configuring Headers 1 Adjusting Header - PowerPoint PPT Presentation

React Native Navigation Configuring Headers 1 Adjusting Header Style There are three key properties to use when customizing the style of your header: headerStyle, headerTintColor, and headerTitleStyle. headerStyle : a style


  1. React Native Navigation Configuring Headers 1

  2. Adjusting Header Style There are three key properties to use when customizing the style of • your header: – headerStyle, – headerTintColor, and – headerTitleStyle. headerStyle : a style object that will be applied to the View that • wraps the header. If you set backgroundColor on it, that will be the color of your header. headerTintColor : the back button and title both use this • property as their color. In the example below, we set the tint color to white (#fff) so the back button and the header title would be white. headerTitleStyle : if we want to customize • the fontFamily, fontWeight and other Text style properties for the title, we can use this to do it. 2

  3. class HomeScreen extends React.Component { static navigationOptions = { title: 'Home', headerStyle: { backgroundColor: '#f4511e', }, headerTintColor: '#fff', headerTitleStyle: { fontWeight: 'bold', }, }; /* render function, etc */ } 3

  4. Notes • On iOS, the status bar text and icons are black, and this doesn't look great over a dark-colored background – configure the status bar to fit with your screen colors as described in the status bar guide. • The configuration in the example only applies to the home screen ; – when we navigate to the details screen, the default styles are back. – Can share navigationOptions between screens. See https://reactnavigation.org/docs/en/headers.html 4

  5. Sharing configurations • can move the configuration up to the stack navigator. • any screen that belongs to the RootStack will have our branded styles. • Can override shared styles 5

  6. const RootStack = createStackNavigator ( class HomeScreen extends React.Component { { static navigationOptions = { Home: HomeScreen, title: 'Home', Details: DetailsScreen, /* No more header config here! */ }, }; { /* render function, etc */ initialRouteName: 'Home', } /* The header config from HomeScreen /* other code... */ is now here */ navigationOptions: { headerStyle: { backgroundColor: '#f4511e', }, headerTintColor: '#fff', headerTitleStyle: { fontWeight: 'bold', }, }, } ); You might be wondering, why headerTitle when we provide a component and not title, like before? The reason is that headerTitle is a property that is specific to a stack navigator, the headerTitle defaults to a Text component that displays the title. 6

  7. Overriding default styles • more control than just changing the text and styles of your title – may want to render an image in place of the title, – or make the title into a button. – In these cases you can completely override the component used for the title and provide your own. 7

  8. class DetailsScreen extends React.Component { static navigationOptions = ({ navigation, navigationOptions }) => { const { params } = navigation.state; Note where the function navigationOptions is placed Must return the config options return { title: params ? params.otherParam : 'A Nested Details Screen', /* These values are used instead of the shared configuration! */ headerStyle: { backgroundColor: navigationOptions.headerTintColor, }, headerTintColor: navigationOptions.headerStyle.backgroundColor, }; }; This is an example of overriding /* render function, etc */ the styles set in the rootstack. } 8

  9. Complete config guide • https://reactnavigation.org/docs/en/stack- navigator.html#navigationoptions-used-by- stacknavigator 9

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend