【问题标题】:Android - Applying TextStyle "bold" removes custom font settingAndroid - 应用 TextStyle“粗体”删除自定义字体设置
【发布时间】:2021-02-11 20:07:46
【问题描述】:

我遇到了奇怪的问题。

目前我有一个TextView 使用我的风格

<TextView
    style="@style/MyText"
    ... />

styles.xml

<style name="MyText" parent="android:TextAppearance">
    <item name="fontFamily">@font/noto_sans_kr</item>
    <item name="android:fontFamily">@font/noto_sans_kr</item>
</style>

最后,这是我的noto_sans.kr.xml

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
    <font
        app:font="@font/noto_sans_cjk_kr_regular"
        app:fontStyle="normal"
        app:fontWeight="400" />
    <font
        app:font="@font/noto_sans_cjk_kr_bold"
        app:fontStyle="normal"
        app:fontWeight="700" />
</font-family>

这工作得很好。我看到了我的自定义字体,即使系统使用了自定义字体,它也只使用我在我的应用中设置的字体。

但是,当我将android:textStyle 属性应用于TextView 时,会发生奇怪的事情。

<TextView
    style="@style/MyText"
    android:textStyle="bold"
    ... />

从 Android Studio 给我正确的设计预览,但是当我启动应用程序时,TextView 正在使用我设置的系统字体,而不是 noto sans。

现在,如果我不使用textStyle,而直接使用 noto_sans_bold 字体文件,它可以正常工作。

<TextView
    fontFamily="@font/noto_sans_cjk_kr_bold"
    ... />

这是字体文件的元数据问题吗?还是我错过了什么?

提前谢谢你。

【问题讨论】:

    标签: android fonts textview


    【解决方案1】:

    在您的 XML 文件中同时使用 font-family 和文本样式属性

    <TextView
        fontFamily="@font/noto_sans_cjk_kr_bold"
        android:textstyle="bold"
        ... />
    

    【讨论】:

    • 为什么?字体已经有 700 粗细,所以是粗体。
    猜你喜欢
    • 2012-12-06
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多