Définition de styles globaux pour les vues dans Android

Disons que je veux que toutes les instances TextView de mon application aient textColor="#ffffff" . Existe-t-il un moyen de définir cela au même endroit au lieu de le définir pour chaque TextView ?

En fait, vous pouvez définir un style par défaut pour TextViews (et la plupart des autres widgets intégrés) sans avoir à faire une classe Java personnalisée ou à définir le style individuellement.

Si vous regardez dans themes.xml dans la source Android, vous verrez un tas d’atsortingbuts pour le style par défaut pour divers widgets. La clé est l’ textViewStyle (ou editTextStyle , etc.) que vous remplacez dans votre thème personnalisé. Vous pouvez les remplacer de la manière suivante:

Créez un styles.xml :

      

Ensuite, appliquez simplement ce thème à votre application dans AndroidManifest.xml :

  

Et toutes vos vues de texte utiliseront par défaut le style défini dans MyTextViewStyle (en l’occurrence, gras et rouge)!

Cela a été testé sur les appareils de l’API niveau 4 et semble fonctionner correctement.

Il y a deux façons de le faire:

1. Utiliser des styles

Vous pouvez définir vos propres styles en créant des fichiers XML dans le répertoire res/values . Donc, supposons que vous vouliez avoir du texte rouge et gras, puis vous créez un fichier avec ce contenu:

      

Vous pouvez le nommer comme vous voulez, par exemple res/values/red.xml . Ensuite, la seule chose à faire est d’utiliser cette vue dans les widgets souhaités, par exemple:

     

Pour plus d’informations, vous pouvez lire cet article: Comprendre les thèmes et les styles Android

2. Utilisation de classes personnalisées

C’est un autre moyen possible d’y parvenir, et ce serait de fournir votre propre TextView qui définisse toujours la couleur du texte comme vous le souhaitez. par exemple:

 import android.content.Context; import android.graphics.Color; import android.util.AtsortingbuteSet; import android.widget.TextView; public class RedTextView extends TextView{ public RedTextView(Context context, AtsortingbuteSet attrs) { super(context, attrs); setTextColor(Color.RED); } } 

Ensuite, il vous suffit de le traiter comme un TextView normal dans votre fichier XML:

     

Que vous utilisiez l’un ou l’autre choix dépend de vos besoins. Si la seule chose que vous voulez faire est de modifier l’apparence, la meilleure approche est la première. D’autre part, si vous souhaitez modifier l’apparence et append de nouvelles fonctionnalités à vos widgets, le second est la solution.

Définissez un style et utilisez-le sur chaque widget, définissez un thème qui remplace la valeur par défaut Android pour ce widget ou définissez une ressource de chaîne et référencez-la dans chaque widget.

Pour la couleur du texte par défaut dans TextView , définissez android:textColorTertiary dans votre thème sur la couleur souhaitée:

 @color/your_text_color 

De nombreuses autres couleurs du contrôle Android peuvent être contrôlées à l’aide d’atsortingbuts de structure ou de soutien des atsortingbuts de bibliothèque si vous utilisez la bibliothèque de support.

Pour une liste des atsortingbuts que vous pouvez définir, consultez le code source Android de styles.xml et de themes.xml , ou ce très utile résumé de Dan Lew, essayez de changer chaque valeur et de voir ce qu’ils changent à l’écran.