Themen, Stile und Attribute

Android verfügt über Stile und Themen, mit denen Sie die Entwicklung der Benutzeroberfläche strukturieren können.





Sie bestehen aus Attributen, die das Design der Elemente definieren. Attribute können erstellt oder vorhandene verwendet werden. Attributen kann ein Wert zugewiesen werden, dessen Typ beim Erstellen angegeben wird.





Ein Beispiel für eine Attributdeklaration aus dem Android SDK:





<attr name="background" format="reference|color" />







Hinweis:

Ein Verweis auf ein anderes Attribut über eine @[package:]type/name



Struktur ist ebenfalls ein Typ.





Themen gegen Stile

Themen und Stile sind sehr ähnlich, werden jedoch für unterschiedliche Zwecke verwendet.





Der Stil kombiniert die Attribute für ein bestimmtes Widget. Durch Extrahieren von Attributen in Stile können diese problemlos verwendet und über mehrere Widgets hinweg gleichzeitig verwaltet werden.





Ein Thema definiert wiederum eine Reihe von Attributen, auf die in einer Anwendung verwiesen werden kann.





Stile und Themen sollen zusammenarbeiten.





Zum Beispiel haben wir einen Stil, in dem der Hintergrund der Schaltfläche colorPrimary



und die Farbe des Textes ist colorSecondary



. Die tatsächlichen Bedeutungen dieser Farben sind im Thema angegeben.





<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
		<style name="LightTheme" parent="YourAppTheme">
				<item name="colorPrimary">#FFFFFF</item>
				<item name="colorSecondary">#000000</item>
		</style>

		<style name="DarkTheme" parent="YourAppTheme">
				<item name="colorPrimary">#000000</item>
				<item name="colorSecondary">#FFFFFF</item>
		</style>

		<style name="Button.Primary" parent="Widget.MaterialComponents.Button">
				<item name="android:background">?attr/colorPrimary</item>
				<item name="android:textColor">?attr/colorSecondary</item>
		</style>
</resources>
      
      



Wenn das Gerät in den Nachtmodus wechselt, kann die Anwendung durch Ändern der Werte dieser Ressourcen von ihrem Thema "Hell" zu "Dunkel" wechseln.





Es ist nicht erforderlich, Stile zu ändern, da Stile eher semantische Namen als bestimmte Farbressourcen verwenden.





Verknüpfungstypen in XML

Das Attribut android:background



kann verschiedene Typen annehmen:





android:background="@color/colorPrimary"
android:background="?attr/colorPrimary"
      
      



@color/colorPrimary



- c colorPrimary



, <color name="colorPrimary">#FFFFFF<color>



, res/values/color.xml



.





:

- , , «name», XML-. , XML- <resources>



, .





, ?attr



- .





?attr/colorPrimary



  colorPrimary



, :





<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
		<style name="YourAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
				<item name="colorPrimary">@color/colorPrimary</item>
		</style>
</resources>
      
      



?attr



, .





, .









, , , .





@[package:]type/name







  1. package



    - () , . - , .





  2. type



    - color



    , string



    , dimen



    , layout



    - . .





  3. name



    - , .





?[package:]type/name







  1. package



    - () , . - , .





  2. type



    - () attr



    ?



    .





  3. name



    - , .





? vs ?attr vs ?android:attr

, , ?android:attr/colorPrimary



, ?attr/colorPrimary



, ?colorPrimary



.





, Android SDK, android



, .





?



?attr



, (, AppCompat MaterialDesign), , .





Android SDK, , colorPrimary



.





, API.





Google Android :





  1. Theming with AppCompat





  2. Android styling: themes vs styles





  3. What’s your text’s appearance?





  4. Android Styling: themes overlay





  5. Android Styling: prefer theme attributes





  6. Android-Styling: Gemeinsame Themenattribute





Ich empfehle weiterhin, das Video von Android Dev Summit



2019 anzuschauen . Link zum Video








All Articles