react-native - 通过主题设置导航栏的背景颜色以响应本机应用程序
问题描述
我正在尝试通过 ThemeProvider 为我的应用程序设置导航栏背景颜色。我应该针对什么组件来设置样式。
import { ThemeProvider } from "react-native-elements";
const theme = {
ListItem: {
titleStyle: { fontSize: 30, color: "red" },
subtitleStyle: { color: "#336699", fontStyle: "italic" }
},
Header: {
backgroundColor: "blue",
color: "red"
}
};
App 组件的 Render :
render(){
return (
<ThemeProvider theme={theme}>
<AppNavigator />
</ThemeProvider>
);
}
可以看到列表项样式,但未设置标题背景颜色。如果我更改屏幕的导航选项,我可以在那里手动设置颜色。但我想避免在每个屏幕上都这样做。
HomeScreen.navigationOptions = ({ navigation }) => {
return {
title: "Title",
headerStyle: {
backgroundColor: "red"
}
};
};
解决方案
在配置导航期间,我能够做到这一点。通过 React Navigator 的 createStackNavigator 设置导航时,有一个名为 defaultNavigationOptions 的选项可用于设置通用样式。我设置堆栈导航器的类中的相关代码。
//common styling
const defaultNavigationOptions = {
headerStyle: {
backgroundColor: "#00f"
},
headerTintColor: "#fff",
headerTitleStyle: {
fontWeight: "bold"
}
};
//override the createStackNav
const createStackNavCustom = screens =>
createStackNavigator(screens, { defaultNavigationOptions }, config);
//create stacks
const HomeStack = createStackNavCustom({
Home: HomeScreen,
AboutEvent: EventDetailsScreen
});
const AboutStack = createStackNavCustom({
About: AboutScreen,
Help: HelpScreen
});
此处的文档:https ://reactnavigation.org/docs/en/headers.html#sharing-common-navigationoptions-across-screens
推荐阅读
- java - 简单的 Java 邮件。无法在 EHLO 中设置 localhost 名称(如何设置 mail.smtp.localhost?)
- r - R积分2函数不接受xmax参数
- angular - 如何在 Angular 中检查 mat-cell 是否为空
- c# - C# 无法循环遍历控件集合并在 Windows 窗体中的用户控件上设置属性
- vue.js - 如何从组件中获取数据
- python - Matplotlib.pyplot - 对数图上的多个图第三个图不会显示
- python - Python多处理:不使用单独的内存空间?
- java - JEP 323 java-11 中的@Notnull 在哪里
- flutter - 迁移到 AndroidX 后构建失败并出现最新依赖项
- vector - 有没有办法转换 ChunkMut
从 Vec::chunks_mut 到切片 &mut [T]?