fontFeatureSettings = smcp не работает в Android - PullRequest
2 голосов
/ 29 января 2020

Мне нужно показать текст SmallCaps в TextView. Я пытаюсь использовать код ниже:

<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"), но также безуспешно.

Как сделать текст SmallCaps в Android? Почему fontFeatureSettings не работает?

Ответы [ 2 ]

7 голосов
/ 04 февраля 2020

Чтобы эта функция работала, у вас должен быть шрифт, который на самом деле имеет символы малых заглавных букв - таким образом, чтобы он работал, передайте шрифт с маленькими заглавными буквами через app:fontFamily(android:fontFamily), например, Aller Display, а затем используйте android:fontFeatureSettings="smcp" сделать это маленькие заглавные буквы.

Надеюсь, это поможет

Редактировать

, как указал @Cliabhach в комментариях, в коде это будет выглядеть примерно так:

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

Редактировать2

Имейте в виду Для тех, кто не знает - Маленькие заглавные буквы будут работать только для строчных букв

0 голосов
/ 04 февраля 2020

Поскольку вы используете TextView, поэтому я полагаю, что вы устанавливаете его значение во время выполнения, как, например, говорит, что у вас есть некоторый объект String, который будет установлен на TextView, например:

textView.setText(someStringObj);

Так Вы можете легко установить его, как в нижнем регистре, добавив:

textView.setText(someStringObj.toLowerCase());
...