React 导航 header 标题被截断
React navigation header title cut off
所以基本上我正在学习 React Native。我正在使用反应导航包,我只想在我的堆栈导航器上显示一个简单的 header 标题,但标题被切断了。 Stack nav title
这是我的App.js
import React from 'react';
import { View, Text } from 'react-native';
import { createStackNavigator, createAppContainer} from 'react-navigation'
import HomeScreen from './screens/HomeScreen'
import DetailsScreen from './screens/DetailsScreen'
const RootStack = createStackNavigator(
{
Home: HomeScreen,
Details: DetailsScreen,
},
{
initialRouteName: 'Home'
}
);
const AppContainer = createAppContainer(RootStack)
export default class App extends React.Component {
render(){
return<AppContainer />
}
}
这是我的 HomeScreen.js
import React from 'react'
import {Button, View, Text } from 'react-native'
export default class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Home',
}
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screeeen</Text>
<Button
title="Go to Details"
onPress={() => this.props.navigation.navigate('Details')}
/>
</View>
)
}
}
在我朋友的手机上看起来不是这样的。我正在使用带有 android 9 的 OnePlus 6。他们使用的是旧版本的 android 这会导致什么问题吗?
原来这是一个影响 OnePlus 用户的特定问题,他们选择使用字体 OnePlus Slate 而不是 exmaple 机器人。更改 phone 中的字体可以解决问题,或者您在应用程序中强制使用字体,它应该也能正常工作
我在 OnePlus phone 上遇到了同样的问题 运行 并在没有字体加载器的情况下解决了它,但是在 headerTitleStyle 宽度中使用导航选项设置样式如下:
import { Dimensions } from 'react-native';
const WIDTH = Dimensions.get('window').width;
export const MyStackNav = createStackNavigator(
{
Tab1: {
screen: Tab1,
navigationOptions: ({ navigation }) => ({
headerTitle: `${navigation.state.routeName} page`,
headerTitleStyle: {
width: WIDTH - 75,
},
}),
},
...more code
}
类似的问题也出现在一加设备的按钮等各个组件中。解决它的一种方法是为标签样式提供一些最小宽度,这样您就不必切换字体系列,如果您使用一些自定义字体会有所帮助
解决方案:width: '100%'
或一些固定值,如 minWidth: 100
抽屉导航中的代码示例
<DrawerItem
labelStyle={{ minWidth: 100 }}
label={`Orders`}
onPress={() => {}}
/>
所以基本上我正在学习 React Native。我正在使用反应导航包,我只想在我的堆栈导航器上显示一个简单的 header 标题,但标题被切断了。 Stack nav title
这是我的App.js
import React from 'react';
import { View, Text } from 'react-native';
import { createStackNavigator, createAppContainer} from 'react-navigation'
import HomeScreen from './screens/HomeScreen'
import DetailsScreen from './screens/DetailsScreen'
const RootStack = createStackNavigator(
{
Home: HomeScreen,
Details: DetailsScreen,
},
{
initialRouteName: 'Home'
}
);
const AppContainer = createAppContainer(RootStack)
export default class App extends React.Component {
render(){
return<AppContainer />
}
}
这是我的 HomeScreen.js
import React from 'react'
import {Button, View, Text } from 'react-native'
export default class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Home',
}
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screeeen</Text>
<Button
title="Go to Details"
onPress={() => this.props.navigation.navigate('Details')}
/>
</View>
)
}
}
在我朋友的手机上看起来不是这样的。我正在使用带有 android 9 的 OnePlus 6。他们使用的是旧版本的 android 这会导致什么问题吗?
原来这是一个影响 OnePlus 用户的特定问题,他们选择使用字体 OnePlus Slate 而不是 exmaple 机器人。更改 phone 中的字体可以解决问题,或者您在应用程序中强制使用字体,它应该也能正常工作
我在 OnePlus phone 上遇到了同样的问题 运行 并在没有字体加载器的情况下解决了它,但是在 headerTitleStyle 宽度中使用导航选项设置样式如下:
import { Dimensions } from 'react-native';
const WIDTH = Dimensions.get('window').width;
export const MyStackNav = createStackNavigator(
{
Tab1: {
screen: Tab1,
navigationOptions: ({ navigation }) => ({
headerTitle: `${navigation.state.routeName} page`,
headerTitleStyle: {
width: WIDTH - 75,
},
}),
},
...more code
}
类似的问题也出现在一加设备的按钮等各个组件中。解决它的一种方法是为标签样式提供一些最小宽度,这样您就不必切换字体系列,如果您使用一些自定义字体会有所帮助
解决方案:width: '100%'
或一些固定值,如 minWidth: 100
抽屉导航中的代码示例
<DrawerItem
labelStyle={{ minWidth: 100 }}
label={`Orders`}
onPress={() => {}}
/>