Typeface.ITALIC не работает на Galaxy Note 2
Я делаю приложение, в котором иногда хочу изменить шрифт текстового представления на курсив, в зависимости от данных, которые нужно показать.
На моем Galaxy Nexus это просто случай
textView.setTypeface(font, iWantItalics ? Typeface.ITALIC : Typeface.NORMAL);
и это прекрасно работает.
Проблема в том, что у меня есть новый Galaxy Note II для тестирования и... нет, курсива нет.
Чтение устройств Samsung, поддерживающих setTypeface(Typeface.Italic)? У меня создается впечатление, что это ошибка в Android-сборке Note, поэтому шрифт Roboto просто не имеет курсива. Я перепробовал все советы по этой теме и другие подобные (Typeface.defaultFromStyle(Typeface.ITALIC)
, Typeface.create(null, Typeface.ITALIC)
и т. д.) без удачи.
Моя проблема в том, что обходной путь, который использовал парень из этой темы, копировал Roboto TTF в assets
каталог и создание шрифта оттуда, но как насчет людей с другим шрифтом по умолчанию в своих телефонах? Я не хочу навязывать им Roboto или, что еще хуже, использовать другой шрифт, когда гарнитура нормальная, а Roboto - курсивом в противном случае.
У кого-нибудь есть идея для меня? Благодарю.
2 ответа
В качестве обходного пути для этой ошибки вы можете установить курсив таким образом (который, кажется, работает на сломанных устройствах 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;
}
Другое простое решение - сделать это так:
myTextView.setText(Html.fromHtml("<i>" + myString + "</i>"));