¿Hay alguna forma de utilizar SpannableString en TabLayout?
Quiero establecer el título de TabLayout con dos tamaños de texto diferentes. Como la imagen dada abajo. O al revés para lograr esto!
He intentado con SpannableString como dar a continuación. ¡Este fragmento está en el bucle for hasta 5!
SpannableString mSpannableString= new SpannableString(s); mSpannableString.setSpan(new RelativeSizeSpan(2f), 0,5, 0); // set size mSpannableString.setSpan(new ForegroundColorSpan(Color.RED), 0, 5, 0);// set color mTabLayout.getTabAt(i).setText(mSpannableString);
Pero como se menciona por CommonaSware setText () no está tomando el contenido rico!
El estilo predeterminado de TextView
para su TextView
s utiliza un TextAppearance
con el atributo textAllCaps
establecido en true
. El método de transformación para esto maneja el CharSequence
como una String
plana, por lo que cualquier información Spannable
se pierde.
Para evitar esto, podemos crear un estilo para el TabLayout
que desactiva textAllCaps
. Por ejemplo:
<style name="TabTextAppearance" parent="TextAppearance.Design.Tab"> <item name="textAllCaps">false</item> </style>
Establecer esto como tabTextAppearance
en TabLayout
permitirá que SpannableString
funcione como se esperaba.
<android.support.design.widget.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabTextAppearance="@style/TabTextAppearance" />
Como se menciona en los comentarios, usar una View
personalizada para las pestañas es otra opción aquí, ya que no tendría la configuración de atributo problemático por defecto.