Como mbaird mencionado, la mejor solución es utilizar fondo con el selector, por lo que no tiene que comprobar onTabChanged
y hacer una actualización manual. El código mínimo está aquí:
private void initTabsAppearance(TabWidget tabWidget) {
// Change background
for(int i=0; i < tabWidget.getChildCount(); i++)
tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tab_bg);
}
Dónde tab_bg
es un dibujable xml con el selector:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/tab_bg_selected" />
<item android:drawable="@drawable/tab_bg_normal" />
</selector>
Para la personalización ficha completa voy a añadir el código para cambiar el estilo del texto pestaña utilizando tema personalizado. Agregue esto a styles.xml
:
<resources>
<style name="MyCustomTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:tabWidgetStyle">@style/CustomTabWidget</item>
</style>
<style name="CustomTabWidget" parent="@android:style/Widget.TabWidget">
<item name="android:textAppearance">@style/CustomTabWidgetText</item>
</style>
<style name="CustomTabWidgetText" parent="@android:style/TextAppearance.Widget.TabWidget">
<item name="android:textSize">12sp</item>
<item name="android:textStyle">bold</item>
</style>
</resources>
Para utilizar este tema, definirlo en AndroidManifest.xml:
<application android:theme="@style/MyCustomTheme">
Y ahora usted tiene widgets de pestaña con el fondo encargo y el estilo de texto de encargo .
Muchas gracias, esto realmente me ayudó. ¿Hay alguna forma de implementar este enfoque en XML? – teoREtik
@teoREtik XML es contenido estático, solo para cuando su actividad se inicia por primera vez (inicialización del diseño), entonces no. – Blundell
Gracias por su ayuda. Esta respuesta es muy útil. +1 por eso .. ¡Salud! – Aditya1510