fontFeatureSettings=smcp 在 Android 中不起作用

fontFeatureSettings=smcp doesn't work in Android

我需要在 TextView 中显示 SmallCaps 文本。我正在尝试使用以下代码:

<TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFeatureSettings="smcp"
        android:textColor="@color/black"
        android:textSize="16sp"
        android:text="TEXT" />

但它只显示普通文本,没有 SmallCaps 效果。我也尝试以编程方式设置它 (text1.fontFeatureSettings = "smcp"),但也没有成功。

如何在 Android 中制作 SmallCaps 文本?为什么 fontFeatureSettings 不起作用?

为了使此功能正常工作,您必须拥有一种实际具有小型大写字符的字体 - 因此要使其正常工作,请通过 app:fontFamily(android:fontFamily) 传递带有小型大写字母的字体,例如 Aller Display,然后使用 android:fontFeatureSettings="smcp" 使其成为小型大写字母。

希望对您有所帮助

编辑

正如@Cliabhach 在评论中指出的那样,在代码中它看起来像

    text1.typeface = resources.getFont(R.font.Aller_Display)
    text1.fontFeatureSettings = "smcp"

编辑2

谨记 对于那些不知道的人 - 小型大写字母仅适用于小写字符

因为你正在使用 TextView 所以我猜你在运行时为它设置了值就像你说你有一些 String 对象将被设置为 TextView 像:

textView.setText(someStringObj);

因此您可以通过添加以下内容轻松将其设置为小写:

textView.setText(someStringObj.toLowerCase());