2016-03-29 12 views
5

In Android-Entwickler-Beispiele, Blogs, etc, habe ich mehrere Präfixe für die Werte der Stil-Attribute gesehen. Kann jemand bitte beschreiben, wann was zu gebrauchen ist? Zum Beispiel, was ist der Unterschied zwischen diesen 3 Fällen?Android-Stil - Unterschied zwischen @style, Android :, @android: Stil, etc.

parent="@android:style/TextAppearance" 
parent="TextAppearance.AppCompat" 
parent="@style/TextAppearance.AppCompat" 

Was ist der Unterschied zwischen diesen 2 Fällen?

<item name="colorControlNormal">@color/white</item> 
<item name="android:colorControlNormal">@color/white</item> 

Antwort

4

Ohne Präfix verweist der Stil auf die gleiche Datei.

@Style verweist auf Ihre style.xml Projektdatei.

@android: style referenzen definiert Android API style.

Mehr über Style Resource und Style and Themes.

Über colorControlNormal vs android: colorControlNormal ist die gleiche Erklärung. Wenn Sie controlColorNormal verwenden, definieren Sie die Farbe, die auf Framework-Steuerelemente in ihrem normalen Zustand in Ihrer App angewendet wird. Wenn Sie android: colorControlNormal verwenden, überschreiben Sie den Farbstandard, der vom System auf Framework-Steuerelemente angewendet wird.

+0

Dies gilt nicht für AppCompat. – technophyle

2

Sie können sich @ als Zeichen dafür vorstellen, dass eine benannte Ressource verfügbar ist.

@type/name identifiziert eine Ressource des Typs type (Zeichenfolge, Farbe, Layout, Stil usw.) mit Namen name definiert in der App steht vor der Tür.

@+id/name identifiziert eine ID-Ressource namens name, die erstellt wird, wenn sie nicht bereits existiert (während @id verweist einfach auf eine ID, die bereits vorhanden ist).

@android:type/name bedeutet, dass die benannte Ressource Teil der Android Plattform ist aufkommt (es ist nicht im app definiert - es wird von dem Gerät zur Verfügung gestellt wird).

Für Style-Eltern ist @style optional. Sie können auf Stile direkt nach Namen verweisen. Es ist redundant, weil Sie sowieso keinen Stil von etwas anderem als einem anderen Stil ableiten können.

+0

Danke. Könnten Sie bitte den Abschnitt colorControlNormal vs android: colorControlNormal näher erläutern? Welchen sollte ich in meiner style.xml verwenden? – clocksmith

+1

Es geht nicht darum, welchen * du * benutzen sollst, es geht darum, den richtigen für deinen Fall zu finden. Wenn es sich um eine Ressource handelt, die Sie selbst definiert haben, verwenden Sie einfach diesen Namen. Wenn es etwas ist, das von der Android-Plattform definiert wird, benötigen Sie das Android-Präfix. –

+0

Es ist wie Doug gesagt. Sieh meinen editierten Beitrag oben. –