ikn*_*now 8 android android-theme android-jetpack-compose
在我这样res/font定义:font-family
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
<font app:fontStyle="normal" app:fontWeight="400" app:font="xyz_1"/>
<font app:fontStyle="normal" app:fontWeight="500" app:font="xyz_2"/>
</font-family>
Run Code Online (Sandbox Code Playgroud)
如何将其加载到 Jetpack Compose 中并将其用作FontFamily对象?
不幸的是,目前还没有一个简单的解决方案可以直接从 xml 中加载 Font-Familys。
我会考虑以下选项:
MaterialTheme.typographyprivate val appFontFamily = FontFamily(
fonts = listOf(
Font(
resId = R.font.roboto_black,
weight = FontWeight.W900,
style = FontStyle.Normal
),
Font(
resId = R.font.roboto_black_italic,
weight = FontWeight.W900,
style = FontStyle.Italic
),
Font(
resId = R.font.roboto_bold,
weight = FontWeight.W700,
style = FontStyle.Normal
),
...
)
)
Run Code Online (Sandbox Code Playgroud)
这是关于此的好读物:https ://alexzh.com/jetpack-compose-theme-and-typography/ 。此外,人们还可以受到启发并为 Mdc 主题适配器做出贡献,以涵盖主题之外的这些特殊用例。我想读取文本样式进行撰写的逻辑已经存在,只需要提供一个 API 来读取自定义样式,而不是 Material 主题中指定的样式。
val FontName = FontFamily(
Font(R.font.font_reg, FontWeight.Normal),
Font(R.font.font_light,FontWeight.Light),
Font(R.font.font_sbold, FontWeight.SemiBold),
Font(R.font.font_xbold, FontWeight.ExtraBold)
)
Run Code Online (Sandbox Code Playgroud)
在任何 Kotlin 文件中(类外)
然后在任何可组合项中使用:
@Composable
fun FontStyledText(text: String) {
Text(
text = text,
fontFamily = FontName,
fontWeight = FontWeight.SemiBold
)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14323 次 |
| 最近记录: |