Thèmes, styles et attributs

Android propose des styles et des thèmes qui vous permettent de structurer le développement de l'interface utilisateur.





Ils sont constitués d'attributs qui définissent la conception des éléments. Les attributs peuvent être créés ou les attributs existants peuvent être utilisés. Une valeur peut être attribuée aux attributs, dont le type est spécifié lors de leur création.





Un exemple de déclaration d'attribut du SDK Android:





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







Noter:

Une référence à un autre attribut via une @[package:]type/name



structure est également un type.





Thèmes vs styles

Les thèmes et les styles sont très similaires, mais ils sont utilisés à des fins différentes.





Le style combine les attributs d'un widget spécifique. En extrayant les attributs des styles, ils peuvent être facilement utilisés et conservés dans plusieurs widgets en même temps.





Un thème, à son tour, définit un ensemble d'attributs qui peuvent être référencés dans une application.





Les styles et les thèmes sont conçus pour fonctionner ensemble.





Par exemple, nous avons un style dans lequel l'arrière-plan du bouton est colorPrimary



et la couleur du texte est colorSecondary



. La signification réelle de ces couleurs est donnée dans le sujet.





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



Lorsque l'appareil passe en mode nuit, l'application peut passer de son thème «clair» à «sombre» en modifiant les valeurs de ces ressources.





Il n'est pas nécessaire de modifier les styles, car les styles utilisent des noms sémantiques plutôt que des ressources de couleurs spécifiques.





Types de lien en XML

L'attribut android:background



peut prendre plusieurs types:





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. Style Android: attributs de thème communs





Je recommande toujours de regarder la vidéo de Android Dev Summit



2019. Lien vers la vidéo








All Articles