首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在KMM项目中使用合成主题

在KMM项目中使用合成主题
EN

Stack Overflow用户
提问于 2021-09-09 21:54:25
回答 1查看 196关注 0票数 0

我正在遵循this compose文档,但是,由于我使用的是由集成开发环境生成的ui.theme项目,所以我没有文档所描述的生成的KMM包。我应该在哪里寻找或编写我自己的主题?我应该制作我自己的主题包,还是把它放在KMM目录中的其他地方?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-10 03:38:03

它不会在您的KMM目录中,因为它使用的是无法从共享代码访问的compose API。

你可以创建一个空的compose项目,然后从那里复制你的主题。这些文件将如下所示:

ui/theme/Color.kt

代码语言:javascript
复制
val Purple200 = Color(0xFFBB86FC)
val Purple500 = Color(0xFF6200EE)
val Purple700 = Color(0xFF3700B3)
val Teal200 = Color(0xFF03DAC5)

ui/theme/Shape.kt

代码语言:javascript
复制
val Shapes = Shapes(
    small = RoundedCornerShape(4.dp),
    medium = RoundedCornerShape(4.dp),
    large = RoundedCornerShape(0.dp)
)

ui/theme/Typography.kt

代码语言:javascript
复制
// Set of Material typography styles to start with
val Typography = Typography(
    body1 = TextStyle(
        fontFamily = FontFamily.Default,
        fontWeight = FontWeight.Normal,
        fontSize = 16.sp
    )
    /* Other default text styles to override
    button = TextStyle(
        fontFamily = FontFamily.Default,
        fontWeight = FontWeight.W500,
        fontSize = 14.sp
    ),
    caption = TextStyle(
        fontFamily = FontFamily.Default,
        fontWeight = FontWeight.Normal,
        fontSize = 12.sp
    )
    */
)

ui/theme/Theme.kt

代码语言:javascript
复制
private val DarkColorPalette = darkColors(
    primary = Purple200,
    primaryVariant = Purple700,
    secondary = Teal200
)

private val LightColorPalette = lightColors(
    primary = Purple500,
    primaryVariant = Purple700,
    secondary = Teal200

    /* Other default colors to override
    background = Color.White,
    surface = Color.White,
    onPrimary = Color.White,
    onSecondary = Color.Black,
    onBackground = Color.Black,
    onSurface = Color.Black,
    */
)

@Composable
fun MyApplicationTheme(
    darkTheme: Boolean = isSystemInDarkTheme(),
    content: @Composable() () -> Unit
) {
    val colors = if (darkTheme) {
        DarkColorPalette
    } else {
        LightColorPalette
    }

    MaterialTheme(
        colors = colors,
        typography = Typography,
        shapes = Shapes,
        content = content
    )
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69125100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档