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?
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".
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 Ordnerres/values/
gespeichert werden . Der Wurzelknoten der XML-Datei muss<resources>
sein.
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.
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.
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>.
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.