it-swarm.com.de

Was ist der Unterschied zwischen styles.xml und themes.xml?

Kann ich wissen, was der Unterschied zwischen styles.xml und themes.xml ist? Für mich sehen sie einfach gleich aus, da beide XML das gleiche Format haben.

<style name="...
    <item name="...

Also, in meiner App, die Anpassungsfarbe, Größe, Zeichnung, bieten ... brauche ich sowohl styles.xml als auch themes.xml? Wie soll ich entscheiden, welche XML-Datei in welche Datei eingefügt werden soll?

55
Cheok Yan Cheng

Aus der ganzen Seite der Styles und Themes . Möglicherweise suchen Sie nach dieser Zeile.

Wenn Sie einen Stil auf eine einzelne Ansicht im Layout anwenden, werden die Eigenschaften durch den Stil definiert werden nur auf diese Ansicht angewendet. Wenn ein Stil ist Auf eine ViewGroup angewendet, erben die untergeordneten View-Elemente nicht die Stileigenschaften - nur das Element, auf das Sie die .__ direkt anwenden. style wendet seine Eigenschaften an. Sie können einen Stil jedoch so anwenden dass es für alle Ansichtselemente gilt, indem der Stil als Design verwendet wird.

Wenn Sie sich als Design bewerben, ändert sich alles im Gültigkeitsbereich, je nachdem, ob Sie es auf Aktivität oder Anwendung angewendet haben. Stil ist eher "lokal". 

78
wtsang02

Zitiert aus dem Android-API-Leitfaden:

Speichern Sie zum Erstellen mehrerer Stile eine XML-Datei im Verzeichnis res/values/ Ihres Projekts. Der Name der XML-Datei ist frei wählbar, muss jedoch die Erweiterung .xml verwenden und im Ordner res/values/ gespeichert werden . Der Wurzelknoten der XML-Datei muss <resources> sein.

Vollständige Dokumentation

Ich denke, es ist wirklich egal, ob Sie irgendwelche Stile in Dateien einfügen, solange es sich um eine XML-Datei handelt, die im res/values/-Ordner liegt.

25
iceagle

Es gibt keinen funktionalen Unterschied zwischen styles.xml und themes.xml, wie viele Antworten gezeigt haben.

Es ist erwähnenswert, dass die iosched2014-App von Google NUR eine styles.xml (keine themes.xml) hat.

https://github.com/google/iosched

12
Jim Vitek

Aus dem Formatvorlagen und Designs Dokument im Abschnitt Definieren von Formatvorlagen:

Speichern Sie zum Erstellen mehrerer Stile eine XML-Datei im Verzeichnis res/values ​​/ Ihres Projekts. Der Name der XML-Datei ist frei wählbar, muss jedoch die Erweiterung .xml verwenden und im Ordner res/values ​​/ gespeichert werden.

The root node of the XML file must be <resources>.
4
rsanchez

Ich stelle gerade fest, dass zum Beispiel Symbolleisten-Textfarben in eine Themendeklaration und für andere Aspekte in eine Stildeklaration einbezogen werden

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

Und in der Toolbar-Deklaration

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

Ich habe versucht, das Thema wegzulassen, indem ich seine Elemente in den Stil verschob, aber das hat nicht funktioniert. In diesem Fall scheint es sich also nur um Stile zu handeln, die als Design dienen, da sie sich auf die geerbten Kinder in der Symbolleiste wie die Textfelder auswirken. 

0
Juan Mendez