在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>
如何在Jetpack Compose中加载此文件并将其用作FontFamily
对象?
5条答案
按热度按时间xiozqbni1#
不幸的是,目前还没有一个直接的解决方案来从xml直接加载Font-Familys。
我会考虑以下选项:
1.为主题定义xml格式的材料设计文本样式(body 1、body 2等),并使用MDC-theme adapter将它们迁移到
MaterialTheme.typography
1.上面的方法可能不适用于特殊的字体系列,例如徽标或其他用例。在这种情况下,我会重新创建FontFamily进行排版:
这是一个很好的阅读:https://alexzh.com/jetpack-compose-theme-and-typography/。也可以得到启发,并贡献给Mdc主题适配器,以涵盖这些特殊的用例,也是在主题之外。我认为在文本样式中阅读的逻辑已经存在,人们只需要提供一个API来读取自定义的,而不是在材料主题中指定的。
pkwftd7m2#
在任何Kotlin文件中(类外)
然后用在任何可组合的:
rsl1atfo3#
对于任何想要更改应用程序字体的人,请执行以下操作
1.在res(res/font)中创建字体目录
1.复制res/font中的.ttf字体
1.找到Type.kt文件(在ui/theme目录中)
1.在Type.kt中创建字体变量
1.您还可以将字体系列设置为特定的排版,如body 1、h1、h2...
x6h2sr284#
vtwuwzda5#
如果需要在合成文本中直接使用字体,则可以在合成文本中调用your_font_file_name.otf文件名,而不使用“***.otf***“。
快回答:
示例: