2015-04-24 18 views
10

So che SpannableString è possibile impostare diverse dimensioni del testo in una visualizzazione testuale, ma se textview viene aggiunto programmaticamente non funziona.spannablestring non funziona per il pulsante creato in modo programmatico

String s = "Best Ever"; 
SpannableString ss1 = new SpannableString(s); 
ss1.setSpan(new RelativeSizeSpan(2f), 0, 4, 0); // set size 
ss1.setSpan(new ForegroundColorSpan(Color.RED), 0, 4, 0); // set color 
TextView tv = (TextView) findViewById(R.id.textview); 
tv.setText(ss1); 
+0

quale versione api? 5+? – pskink

+0

sì il suo 5 @pskink – Venky

+1

lo hanno cambiato in v5, http://stackoverflow.com/questions/29007746/button-settext-with-spannable-dosent-work-for-android-5-0-lollipop – pskink

risposta

25

Come si può vedere, E 'un lavoro su Button e TextView per API17 ma il lavoro sul TextView solo su API21

Interessante! Mi accorgo che il pulsante dell'API 21 è tutto maiuscolo ... Quindi rimuovi tutti i cappucci.

Per impostazione predefinita, i pulsanti Materiale sono in stile per visualizzare il testo in maiuscolo. Tuttavia, c'è un bug nel metodo AllCapsTransformationMethod utilizzato per la maiuscola che lo fa scartare i dati Spannable.

È possibile sovrascrivere lo stile del pulsante predefinito disattivando la modalità allCaps, che è true per impostazione predefinita per i widget in stile Materiale.

Da codice,

txt.setAllCaps(false); 

Da XML,

<View 
    ... 
    android:textAllCaps="false" /> 
+2

Grazie! Stava per sbattere la testa! –

+0

Felice di aiutare :) –

+0

si prega di aggiornare la risposta perché nessun attributo 'android: allCaps'. Ho trovato che 'android: textAllCaps' è quello giusto. –