Typeface.ITALIC не работает на Galaxy Note 2

Я создаю приложение, где иногда я хочу изменить шрифт textview на курсив, в зависимости от отображаемых данных.

В моем Galaxy Nexus это просто случай

textView.setTypeface(font, iWantItalics ? Typeface.ITALIC : Typeface.NORMAL);

и он прекрасно работает.

Проблема в том, что у меня есть новая Galaxy Note II для тестирования и... нет, нет курсива.

Чтение Устройства Samsung, поддерживающие setTypeface (Typeface.Italic)? У меня создается впечатление, что это ошибка в сборке Note Android, поэтому шрифт Roboto просто не имеет курсива, Я пробовал каждый совет по этой теме и другим подобным (Typeface.defaultFromStyle(Typeface.ITALIC), Typeface.create(null, Typeface.ITALIC) и т.д.) Без везения.

Моя проблема заключается в том, что обходной путь парень из этого потока использовал копирование Roboto TTF в каталог assets и создание шрифта оттуда, но как насчет людей с другим шрифтом по умолчанию в своих телефонах? Я не хочу заставлять Roboto на них или, что еще хуже, иметь этот другой шрифт, если шрифт нормальный, а в противном случае - в стиле Roboto.

Есть ли у меня идея? Спасибо.

Ответ 1

В качестве обходного пути для этой ошибки вы можете установить текст курсивом таким образом (что, похоже, работает на сломанных устройствах Samsung):

textView.setText(setTextStyleItalic(textView.getText());

и вам нужен этот метод:

public static CharSequence setTextStyleItalic(CharSequence text) {
    final StyleSpan style = new StyleSpan(Typeface.ITALIC);
    final SpannableString str = new SpannableString(text);
    str.setSpan(style, 0, text.length(), 0);
    return str;
}

Ответ 2

Еще одно простое решение - сделать это следующим образом:

myTextView.setText(Html.fromHtml("<i>" + myString + "</i>"));