首页 > 解决方案 > 使用 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()
    }
}

但上面的代码是用于更改与“系统”主题相对应的主题,而不是用户在应用程序中选择的主题。

标签: androidandroid-themeandroid-jetpack-compose

解决方案


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

某物:

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

推荐阅读