2009-04-21 9 views
17

Sé cómo poner el icono en cada pestaña, eso no es problema. También me encontré con esto: [desbordamiento de pila hilo en más o menos lo mismo] [1]Android: Personalizar las pestañas en el estado: ¿Cómo puedo hacer que un selector sea un dibujable

que siguieron uno de los enlaces de esa pregunta y encontrados [esto] [2]

Más o menos, se dijo para usar un selector definido en el XML, seguro, lo hizo. Pero no hay una identificación asociada w/it, así que no estoy seguro de cómo hacer que la función del selector sea dibujable, así que puedo usarla como icono de las pestañas. Tal vez estoy haciendo esto de la manera incorrecta. Pero esto es lo que tengo, y obviamente me falta algo.

<selector 
    android:id="@+id/myselector" 
    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/darklogo" /> 
    <item 
     android:state_focused="false" 
     android:state_selected="true" 
     android:state_pressed="false" 
     android:drawable="@drawable/lightlogo" /> 

    <!-- Focused states --> 
    <item 
     android:state_focused="true" 
     android:state_selected="false" 
     android:state_pressed="false" 
     android:drawable="@drawable/lightlogo" /> 
    <item 
     android:state_focused="true" 
     android:state_selected="true" 
     android:state_pressed="false" 
     android:drawable="@drawable/lightlogo" /> 

    <!-- Pressed --> 
    <item 
     android:state_pressed="true" 
     android:drawable="@drawable/lightlogo" /> 
</selector> 

En mi código, una pestaña ejemplo se genera usando:

host.addTab(host.newTabSpec("three") 
       .setIndicator("map",drawables) 
       .setContent(new Intent(this, Map.class))); 

En este momento disponibles de forma es sólo una referencia a un recurso de imagen estirable. ¿Cómo hago que el selector sea dibujable?

Esta es mi pregunta [1]: Updating Android Tab Icons [2]: http://groups.google.com/group/android-evelopers/browse_thread/thread/ef3bdebcb715b385

Respuesta

20

El XML que ha incluido aquí es una manera de definir un estirable que permite incorporar una declaración de caso. Presenta un drawable diferente dependiendo del estado de la Vista a la que se está asignando. Como dibujable, debe guardarlo como un archivo xml dentro de la carpeta res/drawable de su proyecto (por ejemplo, tabselector.xml).

Para usarlo en el Tabhost, debe construir TabActivity como lo haría normalmente (como se muestra en este tutorial example).

Luego, cuando agrega cada pestaña al host, especifica el tabselector dibujable como el indicador como se muestra para "TAB 1" a continuación.

Drawable mySelector = getResources().getDrawable(R.drawable.tabselector); 

mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1", mySelector).setContent(R.id.textview1)); 
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2)); 

Nota: Usted no puede cambiar el color de la pestaña fondos detrás de los iconos en este punto.

+0

Como de costumbre. Muchas gracias. Creo que no tenerlo, mi carpeta dibujable era mi mayor problema. Gracias por incluir un código para hacer que me mueva ... Lo agradezco. – Chrispix

+0

¿es esto posible ahora? me refiero a su declaración de Note. revise mi pregunta, por favor: http://stackoverflow.com/questions/2810075/customizing-tab-indicator-images-in-android – Praveen

1

Puede usar una Vista como indicador, de esta manera puede personalizarla de la manera que desee.

mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator(View MyView).setContent(R.id.textview1)); 
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2)); 

La primera pestaña usará una Vista como su indicador y la segunda una CharSecuencia. Eche un vistazo a la clase TabSpec real (http://developer.android.com/reference/android/widget/TabHost.TabSpec.html).

+0

Esto funciona desde la versión de Android 1.6. No lo olvides –

Cuestiones relacionadas