2012-11-28 75 views
11

我正在製作應用程序,有時我想根據要顯示的數據將文本視圖的字體更改爲斜體。Typeface.ITALIC不適用於Galaxy Note 2

在我的Galaxy Nexus,它只是的

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

的情況下,它精美的作品。

問題是我有一個新的Galaxy Note II來測試,不...... nope,no italics。

閱讀Samsung devices supporting setTypeface(Typeface.Italic)?我覺得它是Note的Android版本中的一個錯誤,所以Roboto字體沒有斜體。我已經嘗試了該線程和其他類似的(Typeface.defaultFromStyle(Typeface.ITALIC)Typeface.create(null, Typeface.ITALIC)等)的所有建議,但沒有運氣。

我的問題是從該線程的傢伙所用複製的Roboto TTF在assets目錄,並建立從那裏約人另一默認字體在手機上安裝的字體,但什麼解決方法嗎?我不想強迫Roboto加入,或者更糟糕的是,當字體正常時使用其他字體,否則使用Roboto斜體。

有沒有人有想法給我?謝謝。

+0

我創建了你引用的問題。對於它的價值,我從未找到任何其他方式來處理無法正常工作的設備。關於這些壞消息我很遺憾。我確實希望有人提出更好的解決方案,但= = – FoamyGuy

+0

在這樣的高端和全新設備中出現這樣一個愚蠢的錯誤是不可思議的,不是嗎? – Serandel

+0

我在三星論壇上得到了一位開發人員的關注,所以有希望。 :) http://developer.samsung.com/forum/thread/typefaceitalic-not-working-on-galaxy-note-2/77/209984 – Serandel

回答

14

至於這個bug解決方法,您可以設置文字的斜體這種方式(這似乎就斷了三星設備上工作):

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; 
} 
+0

工程就像一個魅力。做得好! – Serandel

4

另一個簡單的解決方案是這樣做的:

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