Aller au contenu

Changer de style d'une view XML (setStyle ?)


zippeurfou

Recommended Posts

Salut,

Alors pour une application je voudrais pouvoir être capable de changer de theme (via un menu pour l'user..Enfin tout ce qui y a de plus normal :p).

Pour des raison pratique (enfin il me semble) j'utilise un fichier xml res/values/styles.xml (donnée centralisée, simple de modification et maintenance) ...

Mon idée c'etait de charger un styles different suivant le theme que l'utilisateur choisit (ex: il choisit le theme gris alors je charge dans toutes mes view le styles gris dans mon styles.xml... si il choisit le style bleu cela charge le syle bleu dans styles.xml).

Theoriquement c'est assez génial, cela me permet de pouvoir tout centralisé le code dans mon fichier xml et comme ca je modifie l'intégralité des style d'un coup de main...

Probleme: Pour pouvoir faire ca il faut que je puisse changer dynamiquement le style de mes view (et donc via la code java et non le xml). Hors, il n'y a pas de méthode setStyle() pour les view... Je peux uniquement dans le xml faire style="@style/monstyle" :(.

Réecrire a la bourin dans le fichier xml je trouve ca pas beau du tout et meme pas sur que cela marche bien...

Aucune idée ?

Toute aide ou idée serait vraiment bienvenu !

Edit: Je pourrais peut etre changer le theme en créant des themes personnalisé mais le problème vient du fait que j'ai des elements qui sont des view identique mais qui ont des styles differents ce que ne me permet pas l'utilisation de theme (ex: j'ai un frame layout qui a un style orange et un autre qui a un style bleu.. pour ca j'utilise deux differents style.. si je met un theme gris je voudrais que l'un soit gris l'autre blanc...).

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Bon alors je n'ai pas trouver de réponse du coup je me demande si je devrais pas inventé mon propre truc mais pour cela j'aimerai avoir votre avis.

Je vois 2 facon de la faire:

1) je fais un switch sur le setContentView suivant le theme. Cela sous entend que je duplique les fichier xml pour chaque view.

Avantage:

Light en perf.

Facil a implementer.

Inconveniant:

Que c'est brouillon !

Je ne pense pas faire comme cela.

2)je met le tout dans un fichier XML et je parse ce fichier pour changer les view.

Ex:

Apres dans le code je dois parser pour une activitée donnée la bonne partie suivant le theme. Puis je dois manuellement dans le code changer tout les paramettres necessaire des view.

Avantage:

Bien pour la maintenance

Inconvéniant:

Tres long a codé, un milliard de switch case a faire.

Lourd ?

Qu'en pensez vous ?

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...