android - Jetpack compose 从资源中获取 FontFamily

标签 android android-jetpack-compose android-theme

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目的?

最佳答案

不幸的是,目前还没有一个直接的解决方案可以直接从 xml 中加载 Font-Familys。
我会考虑以下选项:

  • 在 xml 中为主题定义 Material 设计文本样式(body1、body2 等)并使用 MDC-theme adapter将它们迁移到 MaterialTheme.typography
  • 以上可能不适用于特殊字体系列,例如 Logo 或其他用例。在这种情况下,我会为撰写重新创建 FontFamily:
  • private 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
           ),
           ...
       )
    )
    
    这是一个很好的阅读:https://alexzh.com/jetpack-compose-theme-and-typography/ .也可以得到启发并为 Mdc 主题适配器做出贡献,以涵盖主题之外的这些特殊用例。我想阅读文本样式以进行撰写的逻辑已经存在,只需要提供一个 API 来读取自定义样式,而不是 Material Theme 中指定的那些。

    关于android - Jetpack compose 从资源中获取 FontFamily,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69673029/

    相关文章:

    java - 主题不影响选项卡

    java - 无法从应用程序 ping 主机,但可以

    android - 如何获取此 git 脚本制作的补丁列表?

    android - 尝试设置 Jetpack Compose 时遇到问题 找到接口(interface) rPluginContext

    android - java.lang.NoSuchFieldError : No field Companion of type Landroidx/compose/foundation/layout/BoxScope$Companion;

    android - Android 中用户定义的 Activity 主题

    android - 无法使用 SimpleAdapter、ViewBinder 和 Asynctask 将图像从 ListView 设置到 ImageView

    java - Magento oauth 与 android

    android - 通过 ComposeView 互操作在 CoordinatorLayout 内编写 LazyColumn 滚动行为

    Android 主题和 styles.xml