J'ai mis à jour mon SDK vers l'API 21 et maintenant l'icône de sauvegarde / remontée est une flèche noire pointant vers la gauche.
J'aimerais que ce soit gris. Comment puis je faire ça?
Dans le Play Store, par exemple, la flèche est blanche.
J'ai fait cela pour définir certains styles. J'ai utilisé @drawable/abc_ic_ab_back_mtrl_am_alpha
pour homeAsUpIndicator
. Ce dessinable est transparent (uniquement alpha) mais la flèche est affichée en noir. Je me demande si je peux définir la couleur comme je le fais dans le DrawerArrowStyle
. Ou si la seule solution est de créer my @drawable/grey_arrow
et de l'utiliser pour homeAsUpIndicator
.
<!-- Base application theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
<item name="android:homeAsUpIndicator" tools:ignore="NewApi">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
</style>
<!-- ActionBar style -->
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:background">@color/actionbar_background</item>
<!-- Support library compatibility -->
<item name="background">@color/actionbar_background</item>
</style>
<!-- Style for the navigation drawer icon -->
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">@color/actionbar_text</item>
</style>
Jusqu'à présent, ma solution a été de prendre le @drawable/abc_ic_ab_back_mtrl_am_alpha
, qui semble être blanc, et de le peindre dans la couleur que je désire à l'aide d'un éditeur de photos. Cela fonctionne, même si je préfère utiliser @color/actionbar_text
comme dans DrawerArrowStyle
.
la source
homeAsUpIndicator
/@drawable/abc_ic_ab_back_mtrl_am_alpha
code pour rendre la flèche arrière blanche. Je préfère cela au piratage de Java.Réponses:
Vous pouvez y parvenir grâce au code. Obtenez la flèche de retour dessinable, modifiez sa couleur avec un filtre et définissez-la comme bouton de retour.
Révision 1:
À partir de l'API 23 (Marshmallow), la ressource dessinable
abc_ic_ab_back_mtrl_am_alpha
est remplacée parabc_ic_ab_back_material
.ÉDITER:
Vous pouvez utiliser ce code pour obtenir les résultats souhaités:
la source
ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mtrl_am_alpha)
cargetResources.getDrawable(int)
est obsolèteEn regardant la source
Toolbar
etTintManager
,drawable/abc_ic_ab_back_mtrl_am_alpha
est teintée avec la valeur de l'attribut stylecolorControlNormal
.J'ai essayé de définir cela dans mon projet (avec
<item name="colorControlNormal">@color/my_awesome_color</item>
dans mon thème), mais c'est toujours noir pour moi.Mise à jour :
Je l'ai trouvé. Vous devez définir l'
actionBarTheme
attribut ( pasactionBarStyle
) aveccolorControlNormal
.Par exemple:
la source
colorControlNormal
sur le thème racine plutôt que sur leactionBarTheme
est la voie à suivre.J'ai essayé toutes les suggestions ci-dessus. La seule façon dont j'ai réussi à changer la couleur de la flèche du bouton Retour par défaut de l'icône de navigation dans ma barre d'outils est de définir colorControlNormal dans le thème de base comme celui-ci. Probablement dû au fait que le parent utilise Theme.AppCompat.Light.NoActionBar
la source
style.xml
colorControlNormal
n'est pas préfixé parandroid:
.Besoin d'ajouter un seul attribut à votre thème de barre d'outils -
Appliquez ce toolbar_theme à votre barre d'outils.
OU
vous pouvez directement appliquer à votre thème -
la source
Il suffit d'ajouter
à votre thème d'application actuel.
la source
si vous l'utilisez
Toolbar
, vous pouvez essayer cecila source
Comme dit sur la plupart des commentaires précédents, la solution est d'ajouter
<item name="colorControlNormal">@color/white</item>
au thème de votre application. Mais confirmez que vous n'avez pas d'autre thème défini dans votre élément Toolbar sur votre mise en page.la source
La réponse de Carles est la bonne réponse, mais peu de méthodes comme getDrawable (), getColor () sont devenues obsolètes au moment où j'écris cette réponse . La réponse mise à jour serait donc
Suite à d'autres requêtes stackoverflow, j'ai trouvé que l'appel de ContextCompat.getDrawable () est similaire à
Et ContextCompat.getColor () est similaire à
Lien 1: ContextCompat.getDrawable ()
Lien 2: ContextCompat.getColor ()
la source
abc_ic_ab_back_material
, au lieu deabc_ic_ab_back_mtrl_am_alpha
.J'ai trouvé une solution qui fonctionne avant Lollipop. Définissez le "colorControlNormal" dans le "actionBarWidgetTheme" pour changer la couleur homeAsUpIndicator. Modification de la réponse de rockgecko ci-dessus pour ressembler à ceci:
la source
Sur compileSdkVersoin 25, vous pouvez faire ceci:
styles.xml
la source
Utilisez la méthode ci-dessous:
Vous pouvez maintenant définir le dessinable avec:
la source
Changer la couleur de l'icône de navigation du menu
Dans style.xml:
la source
Une autre solution qui pourrait fonctionner pour vous est de ne pas déclarer votre barre d'outils comme barre d'action de l'application (par
setActionBar
ousetSupportActionBar
) et de définir l'icône de retour dans votre onActivityCreated en utilisant le code mentionné dans une autre réponse sur cette pageDésormais, vous ne recevrez pas le
onOptionItemSelected
rappel lorsque vous appuyez sur le bouton de retour. Cependant, vous pouvez vous inscrire pour cela en utilisantsetNavigationOnClickListener
. C'est ce que je fais:Je ne sais pas si cela fonctionnera si vous travaillez avec des éléments de menu.
la source
Nous étions confrontés au même problème et tout ce que nous voulions était de régler le
application: collapseIcon
attribut dans la barre d'outils à la fin, que nous n'avons pas trouvé car il n'est pas très bien documenté :)
la source
essaye ça
appel de fonction:
la source
C'est ce qui a fonctionné pour moi:
Ajoutez les attributs ci-dessous à votre thème.
Pour changer la flèche de retour de la barre d'outils / de la barre d'actions au-dessus de l'API 21
Pour changer la flèche de retour de la barre d'outils / de la barre d'action sous l'API 21
Pour changer la flèche arrière du mode d'action
Pour supprimer l'ombre de la barre d'outils / de la barre d'action
Pour modifier le dessin de dépassement de la barre d'actions
Remarque: 'srcCompat' est utilisé à la place de 'android: src' en raison de la prise en charge vectorielle dessiné pour les api inférieurs à 21
la source
La solution est très simple
Mettez simplement la ligne suivante dans votre style nommé AppTheme
Maintenant, tout votre code xml ressemblera à celui ci-dessous (style par défaut).
la source
Je viens de changer le thème de la barre d'outils pour être @ style / ThemeOverlay.AppCompat.Light
et la flèche est devenue gris foncé
la source
Voici comment je l'ai fait dans Material Components:
la source
Vous pouvez changer la couleur de l'icône de navigation par programme comme ceci:
la source
Supprimez simplement
android:homeAsUpIndicator
ethomeAsUpIndicator
de votre thème et tout ira bien. L'color
attribut de votreDrawerArrowStyle
style doit être suffisant.la source
color
attribut). La flèche du tiroir est un peu plus grande.À moins qu'il n'y ait une meilleure solution ...
Ce que j'ai fait, c'est de prendre les
@drawable/abc_ic_ab_back_mtrl_am_alpha
images, qui semblent blanches, et de les peindre dans la couleur que je désire à l'aide d'un éditeur de photos.la source