2015-03-12 19 views
21

Ho un semplice Button:Pulsante setText con Spannable non funziona per Android 5.0 Lollipop

<Button 
    android:id="@+id/test" 
    android:textColor="@color/white" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

e cercare di cambiare proprietà di testo da:

SpannableString span = new SpannableString(text); 
span.setSpan(new AbsoluteSizeSpan(8, true), 5, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
testButton.setText(span); 

Funziona su Android 4.3, ma doesn su 5.0.

La cosa interessante è quando cambio l'implementazione da Button a TextView funziona correttamente su 5.0. Sembra essere qualcosa con Button in Lollipop.

+0

"Funziona con Android 4.3, ma non con 5.0." - Si prega di definire cosa "non" significa qui. Se vuoi dire che il tuo 'AbsoluteSizeSpan' è perso, questo non mi sciocca, dato che Android 5.0 sembra voler controllare di più le didascalie, come forzarle a tutte le maiuscole. – CommonsWare

+0

@CommonsWare sì, lo span viene ignorato. – mklimek

+0

Mi aspetto che ci siano molti sviluppatori che sono irritati con l'impostazione predefinita di Android 5.0 di maiuscole per la didascalia. Se esiste una soluzione alternativa per bloccare questo comportamento, potrebbe anche consentire a 'AbsoluteSizeSpan' di continuare a funzionare. – CommonsWare

risposta

73

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

È possibile sovrascrivere lo stile dei pulsanti predefinito e disabilitare le maiuscole specificando android:textAllCaps="false" sul numero Button.

<Button 
    ... 
    android:textAllCaps="false" /> 
+15

Un altro momento del wtf Android ... quando TextView con setAllCaps è impostato su true, Spannables smette di funzionare. Nel mio caso era un ForegroundColorSpannable. Grazie per la risposta. – Michal

+0

Per ulteriori discussioni, vedere: http://stackoverflow.com/questions/32257606/imagespan-not-working-on-android-5/32867216?noredirect=1#comment53573775_32867216 –

Problemi correlati