android - 使用 Jetpack Compose 的具有多个主题的应用程序
问题描述
我希望我的应用程序向用户提供具有深色主题和浅色主题的选项,并且应用程序的主题将成为用户选择的主题。
如何使用 Android Jetpack Compose 完成此任务?
我一直在通过 Android 代码实验室进行应用主题化,并找到以下代码片段:
@Composable
fun BasicsCodelabTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit
) {
val colors = if (darkTheme) {
DarkColors
} else {
LightColors
}
MaterialTheme(colors = colors) {
content()
}
}
但上面的代码是用于更改与“系统”主题相对应的主题,而不是用户在应用程序中选择的主题。
解决方案
只需将darkTheme
参数设置为用户定义的值即可。如果您不传递参数,则
该值仅是默认值,您也可以根据需要更改此实现。isSystemInDarkTheme()
某物:
setContent {
BasicsCodelabTheme(darkTheme = true /*user choice */) {
//...
}
推荐阅读
- html - 当手机水平翻转时处理响应式css
- react-native - 初始化了一个新的 react-native 应用程序,但没有安装到设备上
- ethereum - 如何与已部署的 ERC20 代币与另一个智能合约进行交互?
- c - 如何将库与 Visual Studio MSVC 链接
- django - 在 django 中使用 vue.js 制作模板应该怎么做
- c# - 实体无法配置为无密钥,因为它是派生类型
- css - Bootstrap 5 - 在同一行上具有另一个 DIV 的流体输入字段长度
- javascript - 为数组 DOM Javascript 中的每个对象添加图像
- javascript - 如何检查本地存储中的特定对象
- angular - 如何在单击时以角度为元素设置属性?