11

我正在制作一个应用程序,有时我想根据要显示的数据将 textview 的字体更改为斜体。

在我的 Galaxy Nexus 上,这只是一个案例

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

它工作得很好。

问题是我有一个新的 Galaxy Note II 来测试,而且……不,没有斜体。

阅读支持 setTypeface(Typeface.Italic) 的三星设备?我觉得这是 Note 的 Android 版本上的一个错误,所以 Roboto 字体根本没有斜体。我已经尝试了关于该线程和其他类似( , 等)的所有建议,Typeface.defaultFromStyle(Typeface.ITALIC)Typeface.create(null, Typeface.ITALIC)没有运气。

我的问题是,该线程中的人使用的解决方法是在assets目录中复制 Roboto TTF 并从那里创建字体,但是在手机中使用另一种默认字体的人呢?我不想在他们身上强制使用 Roboto,或者更糟糕的是,当字体正常时使用其他字体,否则使用 Roboto 斜体。

有人对我有想法吗?谢谢。

4

2 回答 2

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;
}
于 2013-02-19T15:25:58.040 回答
4

另一个简单的解决方案是这样做:

myTextView.setText(Html.fromHtml("<i>" + myString + "</i>"));
于 2013-05-29T13:05:06.833 回答