2010-06-10 3 views
2

J'ai une liste avec deux étiquettes, titre et sous-titre. Je veux avoir un fond sombre et clair en tant qu'options utilisateur. Le titre a textAppearanceMedium et le sous-titre a textAppearanceSmall. Je veux que le style, MyTheme.Dark, ait un texte de couleur blanche et MyTheme.Light pour avoir un texte de couleur noire. Existe-t-il un moyen de définir plusieurs attributs textAppearance pour le même widget TextView?Comment permettre aux utilisateurs de choisir des thèmes dans la vue liste android?

<style name="MyTheme.Dark"> 
    <item name="android:windowBackground">@color/black</item> 
    <item name="android:colorBackground">@color/black</item> 
    <item name="android:background">@color/black</item> 
    <item name="android:divider">@color/white</item> 
     --cannot put textAppearance here since it is different for title and subtitle 
    </style> 

Répondre

0

Je pense que la meilleure façon est d'avoir un format XML différent pour des couleurs et des thèmes différents. Chargez le fichier XML de mise en page en fonction du choix de l'utilisateur. Je n'aime pas ça mais je n'ai trouvé aucune alternative.

+0

voir la réponse J'ai ajouté ... – Edi

0

Je suis un débutant avec Android et moi-même je ne sais pas si je ne fais pas un âne de moi-même, mais pourquoi ne pas utiliser l'androïde: propriété textColor?

<style name="MyTheme.Dark"> 
    <item name="android:windowBackground">@color/black</item> 
    <item name="android:colorBackground">@color/black</item> 
    <item name="android:background">@color/black</item> 
    <item name="android:divider">@color/white</item> 
    <item name="android:textColor">@color/white</item> 
</style> 
+0

Le thème sera appliqué à l'activité. J'aurai d'autres attributs de texte qui sont différents pour le titre et le sous-titre. On dirait que j'ai besoin de reformuler ma question. – dipu

+0

Le style textAppearance défini par le système a la couleur, la taille spécifiée. Par conséquent, la couleur définie dans le thème ne s'applique pas aux widgets TextView. J'ai essayé de définir mon propre style TextAppearance toujours pas de chance. On dirait que le ListView obtient un listAppearance même si je ne le spécifie pas. – dipu

4

Pour référence future ...

En valeurs/themes.xml:

<style name="MyTheme.Dark"> 
    <item name="textColorTitle">@color/white</item> 
</style> 
<style name="MyTheme.Light"> 
    <item name="textColorTitle">@color/black</item> 
</style> 

En valeurs/attrs.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <attr 
     name="textColorTitle" 
     format="reference|color" /> 
</resources> 

Dans la mise en page/my_list_row.xml, l'utilisation textColorTitle valeur pour la couleur de votre texte, comme ceci:

android:textColor="?textColorTitle" 

Faites-moi savoir si cela ne fonctionne pas. Ça marche pour moi.

Questions connexes