Typeface.ITALIC不适用于Galaxy Note 2

时间:2012-11-28 01:23:09

标签: android fonts galaxy samsung-mobile italics

我正在创建一个应用程序,有时我想将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会斜体。

有人对我有意见吗?感谢。

2 个答案:

答案 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>"));