我在react-native 项目中使用react-navigation ,我想用一个图像自定义标题.

对于 colored颜色 ,我可以使用简单的样式,但因为react native不支持背景图像,所以我需要一个不同的解决方案.

推荐答案

Update:

由于v2的库有一个特殊的选项设置标题背景,即headerBackground.

此选项接受React组件,因此当设置为Image组件时,它将使用该组件.

例如:

export default createStackNavigator({
  Home: {
    screen: HomeScreen
  },
}, {
  navigationOptions: {
    headerBackground: () => (
      <Image
        style={StyleSheet.absoluteFill}
        source={{ uri: 'https://upload.wikimedia.org/wikipedia/commons/3/36/Hopetoun_falls.jpg' }}
      />
    ),
  }
});

工作示例:https://snack.expo.io/@koen/react-navigation-header-background


Old answer, for when still using React Navigation v1:

用图像创建自定义标题实际上非常简单.

通过使用视图包装标题并在该视图中放置绝对定位的图像,图像将zoom 到其父级大小.

重要的是将默认标题的backgroundColor设置为transparent.

const ImageHeader = props => (
  <View style={{ backgroundColor: '#eee' }}>
    <Image
      style={StyleSheet.absoluteFill}
      source={{ uri: 'https://upload.wikimedia.org/wikipedia/commons/3/36/Hopetoun_falls.jpg' }}
    />
    <Header {...props} style={{ backgroundColor: 'transparent' }}/>
  </View>
);

然后将该组件用作标题:

const SimpleStack = StackNavigator({
  Home: {
    screen: MyHomeScreen,
  },
}, {
  navigationOptions: {
    headerTitleStyle: { color: '#fff' },
    header: (props) => <ImageHeader {...props} />,
  }
});

这将导致:

React-native相关问答推荐

在AWS-Amplify js v6中检索原始的accesToken和idToken

Reaction-Native-pdf文件不是PDF格式或已损坏

如何在 react native 中以 redux 形式设置隐藏字段?

React js 做通用头部

如果没有启用远程调试器,React Native 代码将无法工作

PanResponder 在第二次拖动时将 Animated.View 捕捉回原始位置

异步(async)/等待(await)和递归

为 React Native TextInput 创建 ref 时出现 TypeScript 问题

react-native:如何在离线模式下在模拟器上运行应用程序?

从组件的 style属性中获取 CSS 属性值

Test suite无法运行 TypeError:Cannot read property ‘default’ of undefined

mapDispatchToProps:有什么意义吗?

使用 React Native 打开 iOS iPad 模拟器

React Native + React (for web) 种子元素

如何将props传递给 React Navigation 导航器中的组件?

react-native 元素/目录 struct 设置

如何在 React Native 中重复图案图像以创建背景?

react-native图像预取

React Navigation 切换背景 colored颜色 和样式 StackNavigator

如何在 React 中将函数与钩子绑定?