2013-03-02 9 views
47

Darf ich wissen, was ist der Unterschied zwischen styles.xml und themes.xml? Für mich sehen sie genauso aus, wie beide XML im selben Format sind.Was ist der Unterschied zwischen styles.xml und themes.xml

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

in meiner app also die Färbung Anpassung bieten, Größe, ziehbar, ... muss ich beide styles.xml und themes.xml als auch? Wie sollte ich entscheiden, welches XML in welche Datei eingefügt werden soll?

Antwort

72

Aus der ganzen Seite der Styles and Themes. Möglicherweise suchen Sie nach dieser Linie. Wenn Sie einen Stil auf eine einzelne Ansicht im Layout anwenden, werden die vom Stil definierten Eigenschaften nur auf diese Ansicht angewendet. Wenn ein Stil auf eine ViewGroup angewendet wird, erben die untergeordneten Ansichtselemente nicht die Stileigenschaften - nur das Element, auf das Sie den Stil direkt anwenden, wendet seine Eigenschaften an. Sie können jedoch einen Stil anwenden, der auf alle Ansichtselemente anwendet, indem Sie den Stil als Thema anwenden.

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

+34

nicht den Unterschied zwischen den beiden Dateien nicht erklärt nicht, es explaind nur den Unterschied im Konzept. Es ist jedoch wahrscheinlich nicht komplizierter, da wir in den meisten Beispielen sehen, dass Sie "MyTheme" in styles.xml einfügen und es als ein Thema im Manifest verwenden. Zum Beispiel verwenden zu können: im Manifest, ist es nicht klar, ob Sie CustomTheme in styles.xml oder themes.xml oder es spielt keine Rolle, in definieren müssen welches von ihnen. – Gavriel

+0

Dies deckt den Unterschied zwischen styles.xml und themes.xml überhaupt nicht ab. siehe @iceagleanswer [hier] (http://stackoverflow.com/a/19808011/5079879) –

+0

warum überschreiben nicht den übergeordneten Stil? –

-4

Hallo hier ist ein Artikel in Bezug auf die Differenz zwischen den Stilen und Themen XML in android please go through

Und auch hier den Android documentation in Bezug auf Stile und Themen in Android.

23

von Android API Guide Zitat:

Um eine Reihe von Arten zu erstellen, eine XML-Datei im res/values/ Verzeichnis Ihres Projekts speichern. Der Name der XML-Datei ist beliebig, muss jedoch die Erweiterung .xml verwenden und im Ordner res/values/ gespeichert werden. Der Stammknoten der XML-Datei muss <resources> lauten.

Full documentation

Also ich denke, es ist nicht wirklich wichtig, wenn Sie alle mögliche Arten in allen Dateien setzen, solange es sich um eine XML-Datei ist, die in res/values/ Ordner lokalisiert.

+2

Ja, verwenden der Grund, warum Menschen styles.xml und themes.xml ist Arten zu unterscheiden, die auf einzelne Ansichten und Stilen angewandt werden, die als Themen gesamte Aktivitäten/Anwendungen angewandt werden. Es macht es einfach, alle verschiedenen Stile zu sichten. – clu

3

aus dem Styles and Themes Dokument genommen, in der Definition von Abschnitt Styles:

eine Reihe von Arten zu erstellen, eine XML-Datei in dem res/Wert/Verzeichnis Ihres Projektes speichern. Der Name der XML-Datei ist beliebig, muss jedoch die Erweiterung .xml verwenden und im Ordner res/values ​​/ gespeichert werden.

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

Es gibt keinen funktionalen Unterschied zwischen styles.xml und themes.xml so viele Antworten angegeben haben.

Es ist erwähnenswert, dass Googles iosched2014 App NUR eine styles.xml (keine themes.xml) hat.

https://github.com/google/iosched

0

Ich Realisierung nur, dass zum Beispiel Toolbar Textfarben in ein Thema Erklärung gehen, und für andere Aspekte gehen in eine Stildeklaration

<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 Symbolleiste Erklärung

<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 versuchte, das Thema, indem ihre Elemente in den Stil zu verzichten, aber das hat nicht funktioniert. In diesem Fall scheint es sich also nur um Stile zu handeln, da sie sich auf die ererbten Kinder in der Symbolleiste auswirken, z. B. auf die Textfelder.