Jetpack Compose Material3 没有使用主题。

3

我正在尝试使用Jetpack Compose Material Design 3设置新项目,但我无法让主题正常工作,屏幕始终显示默认的Android颜色。

这是我的MaterialTheme()代码:

import androidx.compose.material3.MaterialTheme

@Composable
fun AppTheme(
    darkTheme: Boolean = true,
    content: @Composable () -> Unit
) {
    val colorScheme = if (darkTheme) {
        DarkColorScheme
    } else {
        LightColorScheme
    }

    MaterialTheme(
        colorScheme = colorScheme,
        content = content
    )
}

这是 colorSchemes
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color

private val DarkColorScheme = darkColorScheme(
    primary = DarkPrimary,
    secondary = DarkSecondary,
    background = Color.Black,
    surface = DarkBackground,
    onPrimary = Color.DarkGray,
    onSecondary = Color.White,
    onBackground = Color.White,
    onSurface = Color.White
)

private val LightColorScheme = lightColorScheme(
    primary = LightPrimary,
    secondary = LightSecondary,
    background = Color.White,
    surface = Color.White,
    onPrimary = Color.White,
    onSecondary = Color.Black,
    onBackground = Color.Black,
    onSurface = Color.Black
)

这里是一些颜色的示例:

import androidx.compose.ui.graphics.Color

val DarkBackground = Color(0xFF363636)
val DarkPrimary = Color(0xFFaac3e1)

最后,这是我在MainActivity.kt中使用主题的方式:

  @OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {
            AppTheme {
                //App content...
            }
        }
    }

但是当我启动应用程序时,我只看到默认的Android应用程序颜色,这个截图是在打开暗模式的应用程序中获取的(没有暗模式时完全相同):

screenshot of theme on app

这个登录页面只包含输入、文本和按钮字段,我需要添加什么才能在主活动中传递到主题的应用程序内容中找到主题?

非常感谢您的帮助,如果我漏掉了什么显而易见的东西,请多多包涵!


1
你是否正在使用Material3的Text和Button?只有它们才能拾取Material3主题。 - ianhanniballake
啊,我知道这一定是显而易见的问题,我从Material 2迁移到了3,但有些页面仍然有Material 2元素。非常感谢! - MarcusWilliams
1个回答

0

正如@ianhannibllake在他的评论中提到的那样。如果您正在从Material 2迁移到Material 3,请确保还从UI中删除所有Material 2元素(文本、按钮等)。最好如果可以的话,只需删除Material 2依赖项。


我正在使用Material3的所有元素,但它仍然没有应用主题,显示了一些我在项目中定义的随机紫色。尝试了清除缓存并重启,但没有起作用。你能告诉我你是如何解决这个问题的吗? - Amit Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接