web-dev-qa-db-fra.com

Quelle est la différence entre styles.xml et themes.xml

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?

55
Cheok Yan Cheng

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". 

78
wtsang02

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 dossier res/values/ . Le nœud racine du fichier XML doit être <resources>.

Documentation complète

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/.

25
iceagle

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).

https://github.com/google/iosched

12
Jim Vitek

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>.
4
rsanchez

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. 

0
Juan Mendez