2012-11-28 13 views
11

Sto creando un'app dove a volte voglio cambiare il carattere di una textview in corsivo, a seconda dei dati da mostrare.Typeface.ITALIC non funziona su Galaxy Note 2

Sul mio Galaxy Nexus, è semplicemente un caso di

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

e funziona meravigliosamente.

Il problema è che ho un nuovo Galaxy Note II da testare e ... no, nessun corsivo.

Lettura Samsung devices supporting setTypeface(Typeface.Italic)? Ho l'impressione che si tratti di un bug nella build Android della nota, quindi il font Roboto non ha semplicemente il corsivo. Ho provato ogni consiglio su quel thread e altri simili (Typeface.defaultFromStyle(Typeface.ITALIC), Typeface.create(null, Typeface.ITALIC), ecc.) Senza fortuna.

mio problema è che la soluzione il ragazzo da quel filo utilizzato è stato copiare il Roboto TTF nella directory assets e creando il tipo di carattere da lì ma per quanto riguarda le persone con un altro tipo di carattere predefinito in loro telefoni? Non voglio forzare Roboto su di essi o, peggio ancora, avere quell'altro font quando il carattere tipografico è normale e il corsivo di Roboto in caso contrario.

Qualcuno ha un'idea per me? Grazie.

+0

Ho creato la domanda a cui si fa riferimento. Per quello che vale non ho mai trovato nessun altro modo per gestire i dispositivi che non funzionavano correttamente. Scusa per le cattive notizie. Spero che qualcuno si faccia avanti con una soluzione migliore però =) – FoamyGuy

+0

È incredibile avere un insetto così stupido in un dispositivo così esclusivo e nuovo di zecca, vero? – Serandel

+0

Ho attirato l'attenzione di uno sviluppatore nei forum Samsung, quindi c'è speranza. :) http://developer.samsung.com/forum/thread/typefaceitalic-not-working-on-galaxy-note-2/77/209984 – Serandel

risposta

14

Come una soluzione per questo bug, è possibile impostare il testo in corsivo in questo modo (che sembra funzionare sui dispositivi rotti Samsung):

textView.setText(setTextStyleItalic(textView.getText()); 

ed è necessario questo metodo:

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

Funziona come un fascino. Ottimo lavoro! – Serandel

4

Un'altra soluzione facile è farlo in questo modo:

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