我在React Native应用程序中使用React Navigation,我想将 Headers 的backgroundColor更改为渐变,我发现有一个节点模块:react-native-linear-gradient来实现反应原生的渐变
我有这样的Root StackNavigator:
const Router = StackNavigator({
Login: {
screen: Login,
navigationOptions: ({navigation}) => ({
headerTitle: <Text>SomeTitle</Text>
headerLeft: <SearchAndAgent />,
headerRight: <TouchableOpacity
onPress={() => { null }
</TouchableOpacity>,
headerStyle: { backgroundColor: '#005D97' },
}),
},
});
我可以将Text或View包装为渐变:
<LinearGradient colors={['#3076A7', '#19398A']}><Text style={styles.title}>{title}</Text></LinearGradient>,
如何在navigationOptions中包装 Headers 背景以使用LinearGradient模块?
我知道我可以创建一个自定义 Headers 组件并使用它,但是当我这样做时,React Navigation的所有原生导航动画都不像两个Routes之间的Title Animation那样工作,所以它没有帮助我 .
谢谢你的帮助!
3 回答
Mark P的解决方案是正确的,但现在你需要定义headerStyle并在那里进行绝对定位:
和GradientHeader:
仅为了您的信息,现在使用
headerBackground
道具更容易 .您可以使用渐变标头执行此操作:
即使使用SafeArea for IosX,此解决方案也能很好地工作
与此问题类似:React Navigation; use image in header?
对于线性渐变,您只需>
//imports
//header
创建包含在“线性渐变”中的“ Headers ”组件 . 通过制作 Headers
backgroundColor: 'transparent'
,您将显示包裹它的线性渐变 .返回屏幕, Headers 为
GradientHeader
组件 .应该用上面的代码看起来像这样 .
Gradient Header