web-dev-qa-db-fra.com

Comment personnaliser le bouton de retour sur ActionBar

J'ai pu personnaliser l'arrière-plan de la barre d'actions, l'image du logo et la couleur du texte en utilisant les suggestions suivantes:
Android: Comment changer l'icône "Home" de la barre Action en une icône autre que l'icône de l'application?
Couleur du texte de la barre d’action
Image de fond ActionBar

La dernière pièce que je souhaite personnaliser est l'image du bouton de retour. Il est gris par défaut et j'aimerais qu'il soit blanc. Changer la couleur, spécifier un dessin ou simplement le rendre transparent (et ajouter le chevron à mon image de logo personnalisée) fonctionnerait. Comment vais-je à ce sujet?

185
Sunil Gowda

L’indicateur d’augmentation des capacités est fourni par un élément dessinable spécifié dans l’attribut homeAsUpIndicator du thème. Pour le remplacer par votre propre version personnalisée, cela ressemblerait à ceci:

<style name="Theme.MyFancyTheme" parent="Android:Theme.Holo">
    <item name="Android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
</style>

Si vous prenez en charge les versions antérieures à la version 3.0 avec votre application, assurez-vous de mettre cette version du thème personnalisé dans values-v11 ou similaire.

382
Jake Wharton

J'ai vérifié la question. Voici les étapes que je suis. Le code source est hébergé sur GitHub: https://github.com/jiahaoliuliu/sherlockActionBarLab

Remplace le style actuel des périphériques pré-v11.

Copiez et collez le code suivant dans le fichier styles.xml du dossier des valeurs par défaut.

<resources>
    <style name="MyCustomTheme" parent="Theme.Sherlock.Light">
    <item name="homeAsUpIndicator">@drawable/ic_home_up</item>
    </style>
</resources>

Notez que le parent peut être changé pour n’importe quel thème Sherlock.

Remplace le style actuel des périphériques v11 +.

Sur le même dossier où se trouvent les valeurs du dossier, créez un nouveau dossier appelé values-v11. Android recherchera automatiquement le contenu de ce dossier pour les appareils avec API ou version ultérieure.

Créez un nouveau fichier appelé styles.xml et collez le code suivant dans le fichier:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyCustomTheme" parent="Theme.Sherlock.Light">
    <item name="Android:homeAsUpIndicator">@drawable/ic_home_up</item>
    </style>
</resources>

Notez que le nom du style doit être identique à celui du fichier dans le dossier des valeurs par défaut et qu'au lieu de l'élément homeAsUpIndicator, il s'appelle Android: homeAsUpIndicator.

Le problème réside dans le fait que, pour les appareils dotés de l'API 11 ou supérieure, la barre d'action Sherlock utilise la barre d'action par défaut fournie avec Android, dont le nom de clé est Android: homeAsUpIndicator. Mais pour les appareils avec une API 10 ou inférieure, Sherlock Action Bar utilise son propre ActionBar, l'indicateur home as up est appelé simple "homeAsUpIndicator".

Utiliser le nouveau thème dans le manifeste

Remplacez le thème de l'application/activité dans le fichier AndroidManifest:

<application
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/MyCustomTheme" >
30
jiahao

Changer l'icône de navigation arrière diffère pour ActionBar et Toolbar.

Pour ActionBar, remplacez l'attribut homeAsUpIndicator:

<style name="CustomThemeActionBar" parent="Android:Theme.Holo">
    <item name="homeAsUpIndicator">@drawable/ic_nav_back</item>
</style>

Pour l'attribut navigationIcon de la barre d'outils:

<style name="CustomThemeToolbar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="navigationIcon">@drawable/ic_nav_back</item>
</style>
24
duviteck

J'ai fait le code ci-dessous onCreate() et travaillé avec moi

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);
19
Waleed A. Elgalil

Si vous utilisez la barre d'outils, vous n'avez pas besoin de ces solutions. Il vous suffit de changer le thème de la barre d'outils

app:theme="@style/ThemeOverlay.AppCompat.Light"

app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

Si vous utilisez une barre dark.action, votre bouton de retour sera blanc, sinon, si vous utilisez un thème de barre d’action légère, il sera noir.

5
Oguz Ozcan

plateau ceci:

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close);

onCreate() à l'intérieur;

2
Popal

J'ai utilisé l'image back.png dans le fichier project manifest.xml. ça va bien travailler dans le projet.

<activity
        Android:name=".YourActivity"
         Android:icon="@drawable/back"
        Android:label="@string/app_name" >
    </activity>
0

J'ai eu le même problème de direction d'icône du bouton Accueil de la barre d'action, à cause de la gestion manquée de l'icône dans l'icône du répertoire de ressources Gradle

comme dans l'arabe Gradle répertoire de ressources vous mettez l'icône dans x-hdpi et en anglais Gradle ressource le même nom d'icône que vous mettez dans un dossier de densité différente comme xx-hdpi, de sorte que dans APK il y aura deux mêmes noms d'icônes dans des répertoires différents, afin que votre appareil l’icône dépendant de la densité peut être RTL ou LTR 

0
user2508815