React Native,更改 React Navigation 标题样式
Posted
技术标签:
【中文标题】React Native,更改 React Navigation 标题样式【英文标题】:React Native, change React Navigation header styling 【发布时间】:2017-08-08 21:37:54 【问题描述】:我在我的 React Native 应用程序中实现 React Navigation,我想更改标题的背景和前景色。我有以下内容:
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, Component from 'react';
import
AppRegistry,
StyleSheet,
Text,
View
from 'react-native';
import StackNavigator from 'react-navigation';
export default class ReactNativePlayground extends Component
static navigationOptions =
title: 'Welcome',
;
render()
return (
<View style=styles.container>
<Text style=styles.welcome>
Welcome to React Native!
</Text>
<Text style=styles.instructions>
To get started, edit index.android.js
</Text>
<Text style=styles.instructions>
Double tap R on your keyboard to reload,'\n'
Shake or press menu button for dev menu
</Text>
</View>
);
const styles = StyleSheet.create(
container:
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
,
welcome:
fontSize: 20,
textAlign: 'center',
margin: 10,
,
instructions:
textAlign: 'center',
color: '#333333',
marginBottom: 5,
,
);
const SimpleApp = StackNavigator(
Home: screen: ReactNativePlayground
);
AppRegistry.registerComponent('ReactNativePlayground', () => SimpleApp);
默认情况下,标题的背景颜色为白色,前景为黑色。我还查看了 React Navigation 的文档,但我无法找到它显示如何设置样式的位置。有什么帮助吗?
【问题讨论】:
【参考方案1】:试试这个代码:
static navigationOptions =
headerTitle: 'SignIn',
headerTintColor: '#F44336'
;
祝你好运!
【讨论】:
这不是设置标题样式,而是将颜色设置为标题,否决【参考方案2】:根据文档,您可以像这样使用“navigationOptions”样式。
static navigationOptions =
title: 'Chat',
headerStyle: backgroundColor: '#FFF',
headerTitleStyle: color: 'green',
有关 navigationOptions 的更多信息,您还可以阅读文档:-
https://reactnavigation.org/docs/navigators/stack#Screen-Navigation-Options
【讨论】:
【参考方案3】:试试这个工作代码
static navigationOptions =
title: 'Home',
headerTintColor: '#ffffff',
headerStyle:
backgroundColor: '#2F95D6',
borderBottomColor: '#ffffff',
borderBottomWidth: 3,
,
headerTitleStyle:
fontSize: 18,
,
;
【讨论】:
可以加字幕吗???如果标题是“家”,我想在它下面添加“我的家”。我该怎么做?? 是的,您也可以添加字幕。我正在为它添加样本。 const CustomHeader = ( title, subtitle ) => (在较新版本的 React Navigation 中,您有一个更扁平的设置对象,如下所示:
static navigationOptions =
title: 'Chat',
headerStyle: backgroundColor: 'red' ,
headerTitleStyle: color: 'green' ,
不推荐使用的答案:
根据文档 here,您可以修改 navigationOptions 对象。尝试类似:
static navigationOptions =
title: 'Welcome',
header:
style: backgroundColor: 'red' ,
titleStyle: color: 'green' ,
请不要真的最终使用这些颜色!
【讨论】:
没问题,我昨天才这样做的事实是我可以提供帮助的唯一原因。我不得不搜索文档才能找到它。我很高兴这一切都不是徒劳的。如果您对 ReactNavigation 有太多问题,请查看 ReactRouter 的 4.0 分支,它有原生绑定。 我相信这种“嵌套”的标题方式已被弃用 - 请参阅下面@VishalDhaduk 的回答。【参考方案5】:注意! navigationOptions
是 Stack Navigation
和 Drawer Navigation
之间的区别
堆栈导航已解决。
但是对于抽屉导航,您可以添加自己的标题并使用 contentComponent
配置创建样式:
先import DrawerItems, DrawerNavigation from 'react-navigation'
然后
DrawerItems
之前的标题:
contentComponent: props => <ScrollView><Text>Your Own Header Area Before</Text><DrawerItems ...props /></ScrollView>
.
DrawerItems
之后的页脚:
contentComponent: props => <ScrollView><DrawerItems ...props /><Text>Your Own Footer Area After</Text></ScrollView>
.
【讨论】:
以上是关于React Native,更改 React Navigation 标题样式的主要内容,如果未能解决你的问题,请参考以下文章
react-native填坑--react-navigation
React Native,更改 React Navigation 标题样式