React-navigation文档还很年轻,阅读问题并不能为我提供很多帮助(每个版本都会更改)。有人有使用React Native
中的react-navigation
居中标题的有效方法吗?
React-navigation文档还很年轻,阅读问题并不能为我提供很多帮助(每个版本都会更改)。有人有使用React Native
中的react-navigation
居中标题的有效方法吗?
警告:react-navigation 经常变化,对齐标题的方式已经从我第一次回答它时改变了2-3次。如果我的回答对你无效,请查看其他答案。
在2020年,headerLayoutPreset 也被弃用了。新的方式是通过 defaultNavigationOptions:(@ThatFrenchComputerGuy 的答案帮了我)
const AppNavigator = createStackNavigator({
Home: { screen: HomeScreen },
},
{
defaultNavigationOptions: {
title: 'Aligned Center',
headerTitleAlign: 'center'
}
});
在2018年,react-navigation v2版本发布后(2018年4月7日),由于某些原因,alignSelf
不再起作用。下面是新的工作方式,使用headerLayoutPreset,来自@HasanSH:
const HomeActivity_StackNavigator = createStackNavigator({
Home: {screen: Main},
}, {headerLayoutPreset: 'center'});
使用 headerTitleStyle:
static navigationOptions = {
headerTitleStyle: { alignSelf: 'center' },
title: 'Center Title',
}
headerTitleAlign
是我需要解决 Android 对齐问题的关键。iOS 似乎默认居中。 - Dwigt截至2021年,您可以使用headerTitleAlign。
虽然headerLayoutPreset技术上可以工作,但它应该显示一个信息,说明它对Expo用户已过时。实现方式如下:
const AppNavigator = createStackNavigator({
Home: HomeScreen,
},
{
defaultNavigationOptions: {
title: 'Centered',
headerTitleAlign: 'center'
}
})
React-Navigation v5.x 更新: 根据 @Ewan 的更正,如果你正在使用 React-Navigation v5.x,你无法将参数传递给 createStackNavigator()。因此,你应该按照以下方式实现:
<Stack.Navigator screenOptions={{headerTitleAlign: 'center'}}>
navigationOptions: {
title: "Title center",
headerTitleStyle: {
textAlign:"center",
flex:1
},
}
对于在2020年进行搜索的任何人,这对我有效:
<Stack.Navigator screenOptions={{headerTitleAlign: 'center'}}>
https://reactnavigation.org/docs/stack-navigator/#headertitlealign
headerTitleStyle: {textAlign: 'center'}
。 - Jordan Daniels如果左侧没有后退按钮,那么接受的答案只对我有效。在这种情况下,您需要将一个空视图设置到右侧才能正确居中它。
static navigationOptions = {
headerTitleStyle: { alignSelf: 'center' },
title: 'Center Title',
headerRight: (<View />)
}
flex: 1, textAlign: 'center',
以及headerLeft: (<View/>),
并且已经生效。 - Nagibaba{headerTitleStyle: { alignSelf: 'center' }, title: '居中标题', headerLeft: (<Icon ... />), headerRight: (<View />) }
- Harry Moreno最好的方法是按照文档中列出的内容进行实现:
在StackNavigatorConfig
内分配一个可选属性,如下所示:
createStackNavigator({
{ ... // your screens},
{ ...,
headerLayoutPreset: 'center' // default is 'left'
})
headerLayoutPreset
- 指定如何布置标题组件。
这样做,您就不必完全搞乱样式。并且它将应用于该堆栈中所有嵌套屏幕。
查看源
在defaultNavigationOptions
中插入和设置headerTitleAlign
的值。以下是示例:
const MainStack = createStackNavigator(
{
...
defaultNavigationOptions: {
headerTitleAlign: 'center',
}
}
)
对于React Navigation V6,以下代码在我的测试中可以正常工作:
<Stack.Navigator screenOptions={{ headerTitleAlign: "center" }}>
// Put all of your screens here <Stack.Screen ... />
</Stack.Navigator>
static navigationOptions = {
title: "SAMPLE",
headerTitleStyle: { flex: 1, textAlign: 'center'},
};
我遇到了同样的问题,但解决方案非常简单。
我只需添加一行代码:headerTitleAlign:'center',
function HomeNavigator() {
return (
<TabOneStack.Navigator>
<TabOneStack.Screen
name="HomeScreen"
component={TabOneScreen}
options={{
headerRightContainerStyle: {
marginRight: 20,
},
headerTitleAlign: 'center', <-------- here
headerTitle: () => (
<Ionicons
name={'logo-twitter'}
color={Colors.light.tint}
size={30}
/>
),
}}
/>
</TabOneStack.Navigator>
)
}
titleStyle
属性可用于样式设置。你试过了吗? 这是链接。请查看StackNavigator.md
。 - Himanshu Soni