You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Jetpack Compose默认字体未应用于Text组件问题求助

解决方案

问题根源

你在Typography配置中给body1显式指定了fontFamily = FontFamily.Default,而Jetpack Compose的默认Text组件会使用MaterialTheme.typography.body1作为默认样式,这就覆盖了全局的defaultFontFamily设置。Button内部的Text使用的是button样式,你没有显式修改它的字体,所以继承了全局默认字体。

修复方法

修改Type.kt中的body1样式,移除显式的fontFamily设置,让它继承全局的defaultFontFamily:

val Typography = Typography(
    defaultFontFamily = FontFamily.Cursive,
    body1 = TextStyle(
        // 去掉fontFamily = FontFamily.Default这一行
        fontWeight = FontWeight.Normal,
        fontSize = 16.sp
    )
    // 其他样式配置...
)

如果需要保留body1的其他样式但指定字体,也可以直接将fontFamily改为FontFamily.Cursive:

body1 = TextStyle(
    fontFamily = FontFamily.Cursive,
    fontWeight = FontWeight.Normal,
    fontSize = 16.sp
)

另外,如果你希望所有文本样式(如button、caption等)都统一使用默认字体,建议检查并移除这些样式中显式设置的FontFamily.Default,让它们自动继承全局配置。

补充:单独设置文本样式

如果需要给某个特定Text组件单独指定字体,可以直接在组件中设置style参数:

Text(
    text = "Test Text",
    style = MaterialTheme.typography.body1.copy(fontFamily = FontFamily.Cursive)
)

但更推荐通过全局Typography配置统一管理,减少重复代码。


内容的提问来源于stack exchange,提问作者Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:44:53