2010-06-28 3 views
7

Je suis en train de changer le thème d'une activité dans onCreate en utilisant setTheme (je le fais avant même d'appeler super.onCreate(), car il est supposé être plus fiable).Comment modifier textColorPrimary dans un thème?

Cela fonctionne dans le sens où il modifie les couleurs d'arrière-plan et de premier plan. Cependant, ma mise en page comporte quelques éléments qui utilisent des styles tels que textAppearanceLarge. Maintenant textAppearanceLarge d'Android utilise maintenant le textPrimaryColor - qui est toujours inchangé par mon thème.

J'ai essayé de remplacer la couleur de texte primaire dans mon thème, mais cela ne semble pas fonctionner.

Voici la partie cruciale du thème:

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

L'arrière-plan est blanc, noir TextViews clair apparaissent ... mais TextViews en utilisant textAppearanceLarge sont blancs, et en tant que tel invisible (blanc sur blanc).

J'ai essayé des choses comme ça:

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

Mais aucun de ces faire quoi que ce soit. Quel est le tour de magie?

Répondre

1

s'avère que j'aboyait le mauvais arbre. Surpassant les couleurs et tout a bien fonctionné. Cependant, en définissant android:background dans mon thème, tout juste complètement foiré, et tout le texte est apparu blanc, en dépit de moi remplaçant toutes les couleurs (y compris textColorPrimary). Omettre android:background a fait l'affaire.

+0

ah. heureux que cela a fonctionné pour vous! ;) – zsniperx

+0

J'apprécie toujours votre réponse (même si vous parliez plus de styles, je pensais à des thèmes). Je commence lentement à l'obtenir, même si c'est encore un peu fragile. – EboMike

6

Tout comme une solution de contournement, au lieu d'utiliser textAppearanceLarge dans la mise en page, (si vous utilisez XML pour construire la mise en page), définir votre propre style textAppearanceLarge dans le styles.xml qui émule celui par défaut Android, sauf que vous pouvez changer la couleur au blanc.

layout xml:

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

puis dans le styles.xml

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

Merci snipe! Pour élaborer: j'essaie d'ajouter des thèmes à mon application que vous pouvez basculer entre eux, donc j'ai un style par thème qui est censé définir le look entier - si l'utilisateur choisit le thème "blanc", tout sera noir sur blanc, etc. Je ne sais pas comment je pourrais le mettre en place si j'avais un style séparé pour "grand". – EboMike

+0

Votre réponse fonctionne, mais ce n'est pas la bonne façon de créer des thèmes Android, Im cherchant aussi la solution, mais la voie vers l'avant est d'éditer les attributs de couleurs android intégré pour la personnalisation de la couleur facile. – jjalonso

Questions connexes