Puis-je savoir quelle est la différence entre styles.xml
et themes.xml
? Pour moi, ils ont juste la même apparence car les deux XML sont dans le même format.
<style name="...
<item name="...
Donc, dans mon application qui fournit la coloration de personnalisation, la taille, le dessin, ... ai-je aussi besoin de styles.xml
et de themes.xml
? Comment devrais-je décider quel XML mettre dans quel fichier?
Sur la page entière de la Styles et thèmes . Vous recherchez peut-être cette ligne.
Lorsque vous appliquez un style à une seule vue de la présentation, les propriétés définis par le style sont appliqués uniquement à cette vue. Si un style est appliqués à un groupe de vues, les éléments de vue enfants n'hériteront pas du fichier Propriétés de style: uniquement l'élément auquel vous appliquez directement le fichier style appliquera ses propriétés. Cependant, vous pouvez appliquer un style afin qu'il s'applique à tous les éléments de la vue, en appliquant le style en tant que thème.
Lorsque vous appliquez en tant que thème, cela change tout l'étendue, selon que vous l'avez appliqué à Activity ou à Application. Le style est plus "local".
Cité du guide de l'API Android:
Pour créer un ensemble de styles, enregistrez un fichier XML dans le répertoire
res/values/
de votre projet. Le nom du fichier XML est arbitraire, mais il doit utiliser l'extension.xml
et être enregistré dans le dossierres/values/
. Le nœud racine du fichier XML doit être<resources>
.
Donc, je suppose que le fait d’importer des styles dans des fichiers n’importe vraiment pas tant qu’il s’agit d’un fichier xml qui se localise dans le dossier res/values/
.
Il n'y a pas de différence fonctionnelle entre styles.xml et themes.xml, comme de nombreuses réponses l'ont indiqué.
Il est à noter que l'application iosched2014 de Google ne contient que styles.xml (no themes.xml).
Tiré du Styles et thèmes document, dans la section Définition des styles:
Pour créer un ensemble de styles, enregistrez un fichier XML dans le répertoire res/values / de votre projet. Le nom du fichier XML est arbitraire, mais il doit utiliser l'extension .xml et être enregistré dans le dossier res/values /.
The root node of the XML file must be <resources>.
Je viens de me rendre compte que, par exemple, les couleurs du texte de la barre d’outils vont dans une déclaration de thème, et pour d’autres aspects, dans une déclaration de style
<style name="ToolbarTheme" parent="ThemeOverlay.AppCompat.Light">
<item name="Android:textColorPrimary">@Android:color/white</item>
<item name="Android:textColorSecondary">@Android:color/white</item>
</style>
<style name="ToolbarStyle" parent="Base.Widget.AppCompat.Toolbar">
<item name="Android:minHeight">?attr/actionBarSize</item>
<item name="Android:background">@color/colorPrimary</item>
</style>
Et dans la déclaration de la barre d'outils
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
style="@style/ToolbarStyle"
Android:theme="@style/ToolbarTheme">
</Android.support.v7.widget.Toolbar>
J'ai essayé d'omettre le thème en déplaçant ses éléments dans le style, mais cela n'a pas fonctionné. Donc, dans ce cas, il semble que ce ne sont que des styles qui sont en tant que thèmes puisqu'ils affectent les enfants hérités de la barre d'outils tels que les champs de texte.