android tabs selector drawable

Android: personalización de pestañas en estado: cómo hago que un selector sea dibujable



tabs drawable (2)

Sé cómo poner el ícono en cada pestaña, eso no es problema. También encontré esto: [Stack Overflow thread en casi lo mismo] [1]

Seguí uno de los enlaces de esa pregunta y encontré [esto] [2]

Más o menos, dijo usar un selector definido en el XML, claro, lo hizo. Pero no hay una identificación asociada con w / it, así que no estoy seguro de cómo hacer que la función de 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, se genera una pestaña de ejemplo usando:

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

Ahora dibujable es solo una referencia a un recurso de imagen dibujable. ¿Cómo hago que el selector sea dibujable?

Esta es mi pregunta [1]: Actualización de los íconos de la pestaña de Android [2]: http://groups.google.com/group/android-evelopers/browse_thread/thread/ef3bdebcb715b385


El XML que ha incluido aquí es una forma de definir un dibujante que le permite incrustar 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, necesita construir TabActivity como lo haría normalmente (como se muestra en este ejemplo tutorial ).

Luego, cuando agrega cada pestaña al host, especifica el tabselector 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: No puede cambiar el color de los fondos de las pestañas detrás de los iconos en este punto.


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 de TabSpec real ( http://developer.android.com/reference/android/widget/TabHost.TabSpec.html ).