如何设置 react-native-router-flux 的样式?

how to style react-native-router-flux?

我正在为我的学习项目使用 react-native-router-flux 4.0.0-beta.17。我需要自定义 header。例如背景颜色、标题对齐等。我找不到关于它的好文档。其中一个有类似

 <Router sceneStyle={{backgroundColor: '#81b71a'}}>
     <Scene key="root">
        <Scene key='login' component={LoginForm} title='Please Login :)' />
     </Scene>
 </Router>

但它什么也没做。

请给我一些关于好的文档的参考,如果可能的话,请给我一些关于如何设置路由器样式的信息。我在哪里可以找到全面的文档?

也许你可以按照这个 reference,这可能是你的问题,因为放置样式不正确,因为如果你想更改 header 背景颜色,你可以使用 navigationBarStyle 不使用 sceneStyle 像这样:

<Router navigationBarStyle={styles.navBar} titleStyle={styles.navTitle} sceneStyle={styles.routerScene}>
  <Schema .../>
  <Route .../>
</Router>

const styles = StyleSheet.create({
  navBar: {
    flex: 1,
    flexDirection: 'row',
    alignItems: 'center',
    justifyContent: 'center',
    backgroundColor: 'red', // changing navbar color
  },
  navTitle: {
    color: 'white', // changing navbar title color
  },
  routerScene: {
    paddingTop: Navigator.NavigationBar.Styles.General.NavBarHeight, // some navbar padding to avoid content overlap
  },
})

希望这篇参考资料能帮到你。

您可以使用 hideNavBar={true} 隐藏默认 header 并使用您自己的 header 组件来获得完全可自定义的 header。通过这种方式,您可以使用 UI 组件包的 header 组件,例如 native-base.

sceneStyle 道具用于设置所有 RNRF scene/screen 的样式,这是屏幕的内容部分(header 下方)。如果您想为所有 RNRF 场景提供自定义样式 header,您必须在 RNRF 路由器组件中使用 navigationBarStyle 属性。

<Router navigationBarStyle={{ backgroundColor: '#81b71a' }}>
  <Scene key="root">
    <Scene key='login' component={LoginForm} title='Please Login :)' />
  </Scene>
</Router>

下面是我使用的快照示例之一。

参考:https://github.com/aksonov/react-native-router-flux/blob/master/docs/API.md

Router中的sceneStyle属性是应用于所有场景的样式,完全可选

<Router sceneStyle={{ backgroundColor: '#81b71a' }}>
  <Stack key="root">
    <Scene key='sample page' component={Sample} title='Sample Page'/>
  </Stack>
</Router>

这将给出如下结果:

您可以在 Router 中使用 navigationBarStyle 道具,正如@wlisrausr 上面提到的那样

<Router navigationBarStyle={{ backgroundColor: '#81b71a' }}>
      <Stack key="root">
        <Scene key='sample page' component={Sample} title='Sample Page'/>
      </Stack>
    </Router>

这将给出结果:

更改 Header 栏文本样式的简单方法:react-native-router-flux

<Scene key="myJobs"
  title={'My Listings'}
  iconName="myJobs"
  hideNavBar={false}
  component={MyJobs}
  titleStyle={{
    color: '#ffffff',
    fontSize: 22,
    fontFamily: FontFamilyBold,
    fontWeight: '700',
    justifyContent: 'center',
    marginLeft: 30,
  }}
/>