我正在创建一个应用程序,有时我想将textview的字体更改为斜体,具体取决于要显示的数据。
在我的Galaxy Nexus上,它只是一个
的情况textView.setTypeface(font, iWantItalics ? Typeface.ITALIC : Typeface.NORMAL);
并且效果很好。
问题在于我有一个新的Galaxy Note II来测试......不,没有斜体。
阅读Samsung devices supporting setTypeface(Typeface.Italic)?我得到的印象是Note的Android版本中存在错误,因此Roboto字体根本没有斜体。我已尝试过关于该主题的所有建议以及其他类似的建议(Typeface.defaultFromStyle(Typeface.ITALIC)
,Typeface.create(null, Typeface.ITALIC)
等),但没有运气。
我的问题是,使用该线程的人解决方法是复制assets
目录中的Roboto TTF并从那里创建字体,但是那些另一个默认字体的人呢他们的手机?我不想强迫Roboto使用它们,或者更糟糕的是,当字体是正常的时候使用其他字体,否则Roboto会斜体。
有人对我有意见吗?感谢。
答案 0 :(得分:14)
作为此错误的解决方法,您可以将文本设置为斜体(这似乎适用于损坏的三星设备):
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;
}
答案 1 :(得分:4)
另一个简单的解决方案是这样做:
myTextView.setText(Html.fromHtml("<i>" + myString + "</i>"));