2010-06-28 15 views
7

Estoy cambiando el tema de una actividad en onCreate usando setTheme (estoy haciendo eso incluso antes de llamar a super.onCreate(), ya que se supone que es más confiable).¿Cómo cambio textColorPrimary en un tema?

Funciona en el sentido de que cambia los colores de fondo y de primer plano. Sin embargo, mi diseño tiene algunos elementos que usan estilos como textAppearanceLarge. Ahora, textAppearanceLarge de Android usa internamente el textPrimaryColor, que mi tema todavía no ha modificado.

Intenté anular el color del texto primario en mi tema, pero eso no parece funcionar.

Aquí es la parte crucial del tema:

<style name="Theme.MyApp.White"> 
    <item name="android:background">@android:color/white</item> 
    <item name="android:textColor">#000000</item> 
</style> 

El fondo aparece blanco, TextViews lisos aparecen negro ... pero TextViews utilizando textAppearanceLarge son de color blanco, y como tal invisible (blanca en blanco).

he intentado cosas como esta:

<item name="android:ColorPrimary">#000000</item> 
    <item name="android:textColorPrimary">#000000</item> 
    <item name="android:attr/textColorPrimary">#000000</item> 

Pero ninguno de los que hacer nada. ¿Cuál es el truco de magia?

Respuesta

1

resulta que estaba ladrando al árbol equivocado. Anulando los colores y todo funcionó bien. Sin embargo, al definir android:background en mi tema, todo se arruinó por completo y todo el texto apareció en blanco, a pesar de que superé todos los colores (incluido textColorPrimary). Omitir android:background hizo el truco.

+0

ah. ¡Me alegro de que haya funcionado para ti! ;) – zsniperx

+0

Aún aprecio tu respuesta (aunque hablabas más sobre estilos, estaba pensando en temas). Estoy empezando a obtenerlo lentamente, aunque todavía es un poco inestable. – EboMike

6

Así como una solución, lugar de utilizar textAppearanceLarge en el diseño, (si está usando XML para construir el trazado), definir su propio estilo textAppearanceLarge en el styles.xml que emula el que viene por defecto, excepto androide puede cambiar el color a blanco.

diseño xml:

<!-- example textview --> 
<TextView style="@style/large" android:text="text goes here"></TextView> 

luego en la styles.xml

<style name="large"> 
    <item name="android:textColor">@android:color/white</item> 
    <!-- other necessary items here like font etc.--> 
</style> 
+0

Gracias snipe! Para más detalles: estoy tratando de agregar temas a mi aplicación que pueden cambiar entre ellos, así que básicamente tengo un estilo por tema que se supone que define toda la apariencia; si el usuario elige el tema "blanco", todo será negro en blanco, etc. No sé cómo configurarlo si tuviera un estilo separado para "grande". – EboMike

+0

Tu respuesta funciona, pero no es la forma correcta de crear temas de android. También busco la solución, pero la forma más avanzada es editar los atributos de colores de Android incorporados para una fácil personalización del color. – jjalonso

Cuestiones relacionadas