/ / Styles Android, différence entre les niveaux d'api - android, android-xml, android-styles

Styles Android, différence entre les niveaux d'API - Android, Android-XML, Android-Styles

J'essaie d'apprendre à styliser mon application à l'aide du fichier styles.xml et j'ai besoin de quelques éclaircissements sur certaines choses pour le comprendre.

  1. Dans un élément, quelle est la différence entre la définition android:actionbarstyle et juste actionbarstyle ? Je sais que dans ce cas particulier, je dois définir les deux, mais pourquoi? Et qu'en est-il de tous les autres cas, par exemple android:colorPrimary et juste colorPrimary? Dans ce cas, je reçois une erreur en disant que android:colorPrimary ne peut être utilisé qu'avec le niveau 21 d'API minimum. Quelqu'un a-t-il une bonne explication sur android: préfixe et comment cela affecte mon application?

  2. Existe-t-il une référence aux différents styles parents, tels que parent="@style/Widget.AppCompat.Light.ActionBar et que signifient-ils? Comment puis-je trouver une liste des différents styles parent disponibles pour un élément spécifique et ce que je peux "remplacer" en eux? En ce moment, c'est surtout deviner de ma part ....

À titre de référence, je publie mon fichier styles.xml actuel.

<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="MyTheme"/>

<style name="MyTheme" parent="Theme.AppCompat.Light">
<item name="actionBarTheme">@style/MyTheme.ActionBarTheme</item>
<item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>
<item name="actionBarStyle">@style/MyTheme.ActionBarStyle</item>

<item name="colorPrimary">@color/my_green</item>
<item name="colorPrimaryDark">@color/my_forest</item>
<item name="colorAccent">@color/my_soil</item>

<item name="drawerArrowStyle">@style/MyTheme.DrawerArrowStyle</item>

<item name="android:actionOverflowButtonStyle">@style/MyTheme.OverFlow</item>

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

<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
<item name="android:homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>

<item name="colorControlNormal">@color/my_green</item>
<item name="colorControlActivated">@color/my_forest</item>
<item name="colorControlHighlight">@color/my_deep_green</item>
</style>

<style name="MyTheme.ActionBarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<!-- This sets the BACK arrow to white. Otherwise it"s black. Must be placed in the theme-->
<item name="colorControlNormal">@color/white</item>
</style>

<style name="MyTheme.ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="android:background">@color/my_green</item>
<item name="background">@color/my_green</item>
<item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
<item name="titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
<item name="colorControlNormal">@color/white</item>
</style>

<style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">@color/white</item>
</style>

<style name="MyTheme.DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">@color/white</item>
</style>

<style name="MyTheme.OverFlow" parent="Widget.AppCompat.ActionButton.Overflow">
<item name="android:tint">@color/white</item>
</style>
</resources>

Réponses:

2 pour la réponse № 1

Je ferai de mon mieux pour expliquer et me concentrerai sur:

<item name="colorPrimary">@color/my_green</item>
<item name="colorPrimaryDark">@color/my_forest</item>
<item name="colorAccent">@color/my_soil</item>

Ces attributs sont régulièrement disponibles avec le niveau 21 de l'API. En général, vous utilisez des attributs avec le préfixe "android".

Si vous définissez tous vos styles dans le styles.xml de votre dossier de valeurs et si vous utilisez une application compatible, vous avez besoin des deux.

Sans le préfixe, les attributs s'appliquent aux appareils pré L. c'est-à-dire compatible avec les applications. Pour le faire fonctionner pour les appareils L et supérieurs, vous devez spécifier à nouveau l'attribut avec le préfixe "android".

Et pour obtenir les autres styles Android, vous pouvez les utiliser, comme vous entrez dans les classes et les implémentations. Pour Mac, j'appuie sur le bouton de commande, puis je clique avec la souris sur le style spécifique.