使用 Jetpack Compose 的多主题应用

App with multiple themes using 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()
    }
}

但是上面的代码是为了改变'system'主题对应的主题,而不是用户在应用程序中选择的。

只需将darkTheme参数设置为用户定义的值即可。
如果不传递参数,值isSystemInDarkTheme()只是默认值,您也可以根据需要更改此实现。

某事:

setContent {
    BasicsCodelabTheme(darkTheme = true /*user choice */) {
       //... 
}