2009-12-15 10 views
6

Tengo una aplicación que se dirige al marco 1.5 y utiliza el tema de luz predeterminado. Al usar un widget de pestañas con este tema, las imágenes de pestañas son apenas visibles, y los subtítulos de las pestañas son bastante imposibles de discernir, a excepción de la pestaña actualmente activa.Android TabWidget in Light tema

En el tema oscuro predeterminado, estas pestañas aparecen con bastante claridad, pero esta no es una solución con la que estaría muy contento. ¿Existe una configuración simple que pueda establecer, que configure el widget de pestañas para una mejor visibilidad en temas claros, o tendría que alterar manualmente las imágenes y los estilos de texto?

Respuesta

10

no es bonita, pero puede probar esto en la actividad de su pestaña.

// light theme support 
final TabHost tabHost = getTabHost(); 
tabHost.setBackgroundColor(Color.WHITE); 
tabHost.getTabWidget().setBackgroundColor(Color.BLACK); 

// hack to set font size 
LinearLayout ll = (LinearLayout) tabHost.getChildAt(0); 
TabWidget tw = (TabWidget) ll.getChildAt(0); 

// first tab 
RelativeLayout rllf = (RelativeLayout) tw.getChildAt(0); 
lf = (TextView) rllf.getChildAt(1); 
lf.setTextSize(21); 
lf.setPadding(0, 0, 0, 6); 

// second tab 
RelativeLayout rlrf = (RelativeLayout) tw.getChildAt(1); 
rf = (TextView) rlrf.getChildAt(1); 
rf.setTextSize(21); 
rf.setPadding(0, 0, 0, 6); 

/res/values/colors.xml debe tener

<resources> 
    <drawable name="black">#ff000000</drawable> 
    <drawable name="white">#ffffffff</drawable> 
</resources> 

AndroidManiest.xml debe tener

<application android:theme="@android:style/Theme.Light"> 

si quieres hacer algo más loco, tratar http://ezmobile.wordpress.com/2009/02/02/customized-android-tabs/

+1

sí, esto tendrá que hacer. quiero mantener una apariencia lo más nativa posible, así que no me aventuraré en gráficos personalizados. En esencia, establecer el color de fondo de la etiqueta del tabulador en negro era todo lo que se necesitaba para hacer visibles las pestañas. el resto ya es blanco del tema principal de la aplicación, así que no hice más configuraciones. En cuanto a recursos/colores; ¿Cómo es que estás definiendo tus propios colores aquí? ¿No es el mismo negro que en 'android.graphics.Color.BLACK'? o simplemente no desea importar toda la biblioteca, solo por dos colores? –

+0

tengo más colores en mi archivo de colores - quería hacer el post más limpio :) – yanokwa

+0

He intentado esta solución, pero en eclipse los GlobalConstants están subrayados en rojo. aparece el error. "GlobalConstants no se puede resolver". ¿Debo declarar GlobalConstants o importarlo? –

2

Esto es un error; ¿Puedes reportarlo en el the issue tracker?

AFAIK, su solución para personalizar los estilos de texto e imagen suena bien.

También es de destacar que el widget de pestañas en 2.0 no parece tener un estilo ligero.

2

Al usar la herramienta hierarchyviewer encontré la identificación de Android para la vista de texto en la pestaña. Una mejor manera de cambiar el (incluyendo el color) las propiedades del texto es de la siguiente manera ...

TabWidget tw = (TabWidget)tabHost.findViewById(android.R.id.tabs); 
View tabView = tw.getChildTabViewAt(0); 
TextView tv = (TextView)tabView.findViewById(android.R.id.title); 
tv.setTextSize(20); 
2

Una forma muy sencilla de resolver el problema de color/contraste en el diseño:

<TabWidget 
    android:id="@android:id/tabs" 
    android:background="#FF000000" 
    android:padding="2dp" 

Este establece el fondo del TabWidget en negro y agrega un poco de relleno para que tenga contraste con las pestañas sobre el fondo negro. No es perfecto, pero funciona en 1.5, 2.2, tema claro y oscuro.