2012-04-11 14 views
5

Estoy usando las bibliotecas depreciadas para TabHost/TabWidget en una aplicación Ice Cream Sandwich. No tengo el tiempo disponible para familiarizarme con ActionBarSherlock, así que tuve que acceder a la aplicación de la única manera que sabía.¿Cómo doy estilo a un TabWidget en Ice Cream Sandwich?

Me gustaría saber cómo puedo hacer para diseñar los objetos TabWidget y sus objetos Tab, desde cambiar el color de la pestaña seleccionada, hasta los colores de fondo y la imagen? El uso de estilos y temas estándar no parece funcionar.

Respuesta

8

Suponiendo que la biblioteca en desuso funciona como siempre, como debería ser, este es el procedimiento que he usado para colorear mis pestañas. Acabo de crear el fondo en el código de la siguiente manera, ya que no era direcly disponible en XML:

TabWidget tabs = (TabWidget)getTabWidget();    
     for (int i = 0; i<tabs.getChildCount(); i++) { 
      RelativeLayout tab = (RelativeLayout) tabs.getChildAt(i); 
      tab.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.tabindicator)); 

El dibujable tabindicator es el siguiente:

<?xml version="1.0" encoding="utf-8" ?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- Non focused states --> 
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected" /> 
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected" /> 
<!-- Focused states --> 
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_focus" /> 
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_focus" /> 
<!-- Pressed --> 
<item android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_press" /> 
<item android:state_pressed="true" android:drawable="@drawable/tab_press" /> 
</selector> 

Los dibujables eran sólo el 9-patch con imágenes el color, aunque es posible que pueda obtener un efecto similar con un color estándar.

+0

Esto fue más o menos perfecto, gracias. Tuve que ir a TabWidget llamando a tabHost.getTabWidget(), pero a partir de ahí, el resto cayó en su lugar. Agradeciendo amablemente Stev_k. –

+0

Esto vuelve a utilizarse después de que 'FragmentTabHost' se introdujo en support lib. Además, la vista secundaria de pestañas no es 'RelativeLayout' pero es' LinearLayout' en 'FragmentTabHost'. –

Cuestiones relacionadas