React Navigation 切换背景颜色和样式 StackNavigator
React Navigation switching background colors and styling StackNavigator
我是 React Native 的新手,但我有一个包含三个场景的简单工作应用程序。我之前使用的是 Navigator,但感觉很慢,很高兴尝试 React Navigation(如 https://reactnavigation.org/)。实施 React Navigation 后,我的背景颜色从白色变为灰色,灰色变为白色。这很奇怪,不应该相关。但是我没有改变我的风格。我只实施了新的导航并且颜色发生了变化。当我恢复到 Navigator 时,我的颜色 return。我正在使用 StackNavigator。有没有人遇到过这种奇怪的现象?
或者更好的问题是:如何在 React Navigation 的 StackNavigator 中设置 header 和背景颜色的样式?
要在 React Navigation 中设置 header 的样式,请在 navigationOptions object:
中使用 header object
static navigationOptions = {
header: {
titleStyle: {
/* this only styles the title/text (font, color etc.) */
},
style: {
/* this will style the header, but does NOT change the text */
},
tintColor: {
/* this will color your back and forward arrows or left and right icons */
}
}
}
要设置 backgroundColor
的样式,您只需在您的应用中设置 backgroundColor
,否则您将获得默认颜色。
更新!!截至 2017 年 5 月 beta9,navigationOptions 现在是 flat
你可以read about the breaking change here
您需要从 header object 中删除 object 键。另外,请注意它们已被重命名。
static navigationOptions = {
title: 'some string title',
headerTitleStyle: {
/* */
},
headerStyle: {
/* */
},
headerTintColor: {
/* */
},
}
这是我用来更改卡片背景颜色和页眉背景以及字体颜色的示例。
/*
1. Change React Navigation background color.
- change the style backgroundColor property in the StackNavigator component
- also add a cardStyle object to the Visual options config specifying a background color
*/
//your new background color
let myNewBackgroundColor = 'teal';
const AppNavigator = StackNavigator({
SomeLoginScreen: {
screen: SomeLoginScreen
}
}, {
headerMode: 'screen',
cardStyle: {backgroundColor: myNewBackgroundColor
}
});
//add the new color to the style property
class App extends React.Component {
render() {
return (
<AppNavigator style = {{backgroundColor: myNewBackgroundColor}} ref={nav => {this.navigator = nav;}}/>
);
}
}
/*
2. Change React Navigation Header background color and text color.
- change the StackNavigator navigationOptions
*/
/*
its not clear in the docs but the tintColor
changes the color of the text title in the
header while a new style object changes the
background color.
*/
//your new text color
let myNewTextColor = 'forestgreen';
//your new header background color
let myNewHeaderBackgroundColor = 'pink';
const AppNavigator = StackNavigator({
SomeLoginScreen: {
screen: SomeLoginScreen,
navigationOptions: {
title: 'Register',
header: {
tintColor: myNewTextColor,
style: {
backgroundColor: myNewHeaderBackgroundColor
}
},
}
}
}, {
headerMode: 'screen',
cardStyle:{backgroundColor:'red'
}
});
Use below code to create custom navigation header
static navigationOptions = {
title: 'Home',
headerTintColor: '#ffffff',
headerStyle: {
backgroundColor: '#2F95D6',
borderBottomColor: '#ffffff',
borderBottomWidth: 3,
},
headerTitleStyle: {
fontSize: 18,
},
};
试试这个代码。
static navigationOptions = {
title: 'KindleJoy - Kids Learning Center',
headerTintColor: '#ffffff',
/*headerBackground: (
<Image
style={StyleSheet.absoluteFill}
source={require('./imgs/yr_logo.png')}
/>
),*/
headerStyle: {
backgroundColor: '#1d7110',
borderBottomColor: 'black',
borderBottomWidth: 0,
},
headerTitleStyle: {
fontSize: 18,
}
};
好的,对我来说没什么用,所以我想出了自己的解决方案
static navigationOptions = ({ navigation, screenProps }) => ({
headerLeft: (
<NavBackButton onPress={() => { navigation.goBack(); }} />
),headerStyle: {
backgroundColor: CLColors.MAIN_BLUE
},
headerTitle: <Text style={[CLStyles.H6MEDIUM_WHITE, {marginLeft:8}]}>Profile</Text>
, footer: null,
});
headerTitle
会神奇地在此处放置自定义 Text
元素。
headerStyle
会神奇地改变导航栏的背景颜色。
headerLeft
将帮助您自定义后退按钮。
我认为 none 以上答案在 react-navigation 5
中对我有用,所以,我将其作为自己的解决方案并与您分享
刚刚在 react-navigation 5
中更改了 theme
的背景,您可以开始了。
import React from 'react';
import { NavigationContainer, DefaultTheme } from '@react-navigation/native';
const MainNavigator = () => {
const MyTheme = {
...DefaultTheme,
colors: {
...DefaultTheme.colors,
background: '#FFF',
},
};
return (
<NavigationContainer theme={MyTheme}>
...
</NavigationContainer>
);
};
export default MainNavigator;
我是 React Native 的新手,但我有一个包含三个场景的简单工作应用程序。我之前使用的是 Navigator,但感觉很慢,很高兴尝试 React Navigation(如 https://reactnavigation.org/)。实施 React Navigation 后,我的背景颜色从白色变为灰色,灰色变为白色。这很奇怪,不应该相关。但是我没有改变我的风格。我只实施了新的导航并且颜色发生了变化。当我恢复到 Navigator 时,我的颜色 return。我正在使用 StackNavigator。有没有人遇到过这种奇怪的现象?
或者更好的问题是:如何在 React Navigation 的 StackNavigator 中设置 header 和背景颜色的样式?
要在 React Navigation 中设置 header 的样式,请在 navigationOptions object:
中使用 header objectstatic navigationOptions = {
header: {
titleStyle: {
/* this only styles the title/text (font, color etc.) */
},
style: {
/* this will style the header, but does NOT change the text */
},
tintColor: {
/* this will color your back and forward arrows or left and right icons */
}
}
}
要设置 backgroundColor
的样式,您只需在您的应用中设置 backgroundColor
,否则您将获得默认颜色。
更新!!截至 2017 年 5 月 beta9,navigationOptions 现在是 flat
你可以read about the breaking change here
您需要从 header object 中删除 object 键。另外,请注意它们已被重命名。
static navigationOptions = {
title: 'some string title',
headerTitleStyle: {
/* */
},
headerStyle: {
/* */
},
headerTintColor: {
/* */
},
}
这是我用来更改卡片背景颜色和页眉背景以及字体颜色的示例。
/*
1. Change React Navigation background color.
- change the style backgroundColor property in the StackNavigator component
- also add a cardStyle object to the Visual options config specifying a background color
*/
//your new background color
let myNewBackgroundColor = 'teal';
const AppNavigator = StackNavigator({
SomeLoginScreen: {
screen: SomeLoginScreen
}
}, {
headerMode: 'screen',
cardStyle: {backgroundColor: myNewBackgroundColor
}
});
//add the new color to the style property
class App extends React.Component {
render() {
return (
<AppNavigator style = {{backgroundColor: myNewBackgroundColor}} ref={nav => {this.navigator = nav;}}/>
);
}
}
/*
2. Change React Navigation Header background color and text color.
- change the StackNavigator navigationOptions
*/
/*
its not clear in the docs but the tintColor
changes the color of the text title in the
header while a new style object changes the
background color.
*/
//your new text color
let myNewTextColor = 'forestgreen';
//your new header background color
let myNewHeaderBackgroundColor = 'pink';
const AppNavigator = StackNavigator({
SomeLoginScreen: {
screen: SomeLoginScreen,
navigationOptions: {
title: 'Register',
header: {
tintColor: myNewTextColor,
style: {
backgroundColor: myNewHeaderBackgroundColor
}
},
}
}
}, {
headerMode: 'screen',
cardStyle:{backgroundColor:'red'
}
});
Use below code to create custom navigation header
static navigationOptions = {
title: 'Home',
headerTintColor: '#ffffff',
headerStyle: {
backgroundColor: '#2F95D6',
borderBottomColor: '#ffffff',
borderBottomWidth: 3,
},
headerTitleStyle: {
fontSize: 18,
},
};
试试这个代码。
static navigationOptions = {
title: 'KindleJoy - Kids Learning Center',
headerTintColor: '#ffffff',
/*headerBackground: (
<Image
style={StyleSheet.absoluteFill}
source={require('./imgs/yr_logo.png')}
/>
),*/
headerStyle: {
backgroundColor: '#1d7110',
borderBottomColor: 'black',
borderBottomWidth: 0,
},
headerTitleStyle: {
fontSize: 18,
}
};
好的,对我来说没什么用,所以我想出了自己的解决方案
static navigationOptions = ({ navigation, screenProps }) => ({
headerLeft: (
<NavBackButton onPress={() => { navigation.goBack(); }} />
),headerStyle: {
backgroundColor: CLColors.MAIN_BLUE
},
headerTitle: <Text style={[CLStyles.H6MEDIUM_WHITE, {marginLeft:8}]}>Profile</Text>
, footer: null,
});
headerTitle
会神奇地在此处放置自定义 Text
元素。
headerStyle
会神奇地改变导航栏的背景颜色。
headerLeft
将帮助您自定义后退按钮。
我认为 none 以上答案在 react-navigation 5
中对我有用,所以,我将其作为自己的解决方案并与您分享
刚刚在 react-navigation 5
中更改了 theme
的背景,您可以开始了。
import React from 'react';
import { NavigationContainer, DefaultTheme } from '@react-navigation/native';
const MainNavigator = () => {
const MyTheme = {
...DefaultTheme,
colors: {
...DefaultTheme.colors,
background: '#FFF',
},
};
return (
<NavigationContainer theme={MyTheme}>
...
</NavigationContainer>
);
};
export default MainNavigator;