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
相关产品推荐
相关产品推荐

