Supprimer l'icône / le logo de la barre d'action sur Android


146

J'ai essayé de trouver un moyen de supprimer l'icône / le logo de la barre d'action, mais la seule chose que j'ai trouvée après une heure de recherche dans SO, la documentation d'Android et Google est de savoir comment supprimer la barre de titre dans son ensemble. Ce n'est pas ce que je veux. Je souhaite uniquement supprimer l'icône / le logo de la barre de titre.

Quelqu'un sait comment y parvenir? De préférence, j'aimerais faire cela en XML .


1
Vous auriez pu simplement lire le guide API sur la barre d'action. Il le dit directement dans le guide.
Mgamerz

6
Chaque information se trouve quelque part.
Hrafn

pouvez-vous nous montrer ce que vous avez essayé? ce que vous avez trouvé précédemment qui ne fonctionne pas?
DForck42

@ DForck42 Cette question n'est plus vraiment d'actualité (presque 4 ans). Vous pouvez trouver de nombreuses façons d'y parvenir dans les réponses ci-dessous.
Hrafn

Réponses:


58

Si vous avez défini android:logo="..."dans la <application>balise de votre AndroidManifest.xml, vous devez utiliser ces éléments pour masquer l'icône:

thème pré-v11

<item name="logo">@android:color/transparent</item>

thème v11 et supérieur

<item name="android:logo">@android:color/transparent</item>

L'utilisation de ces deux styles a correctement masqué l'icône de la barre d'action sur un appareil 2.3 et 4.4 pour moi (cette application utilise AppCompat ).


Cela fonctionne, mais dans mon cas, lorsque j'ai une vue de recherche et que je clique dessus / développez-la, l'icône / le logo mon application réapparaît. Des idées?
acrespo

@acrespo hmm Je sais de quoi vous parlez mais je n'ai pas recherché de solution pour celui-là, désolé.
Charles Madere

1
Ce que je fini par faire est mise <application (...) android:logo="@android:color/transparent"> (...)dans mon AndroidManifest.xmlet en forçant useLogopour displayOptionsdans mon style comme celui - ci <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>. Cette dernière partie était importante car dans certains appareils (je pense que la plupart du temps post-sucette), le maudit searchview a pris l'appIcon et l'a mis à la place du logo, même si le logo était défini comme transparent: s
acrespo

228

Ajoutez le code suivant dans vos styles de barre d'action:

<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item> <!-- This does the magic! -->

PS: J'utilise Actionbar Sherlock et cela fonctionne très bien.


2
Un bon truc, merci! Il cesse même de prendre de la place dans la barre d'action!
Igor Čordaš

6
Merci .. il a également travaillé dans le code ... actionBar.setIcon (android.R.color.transparent);
Jagdeep Singh

1
Excellente réponse ... :)
Bytecode

24
Certains appareils Samsung s'affichent @android:color/transparenten NOIR. Cela semble fou, mais de nombreux fabricants d'appareils remplacent les paramètres par défaut d'Android; y compris les couleurs. Pour cette raison, je créerais une couleur dans colors.xml comme ceci: <color name="transparent">#00000000</color>et je ferais référence à cela au lieu d'obtenir la valeur d'Android.
Matt W

1
@jose_GD: android: displayOptions est v11 et plus seulement, vous devez donc les deux pour être rétrocompatibles.
Nilzor

115

Si vous ne voulez pas l'icône dans une activité particulière.

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    

45
getActionBar (). setIcon (android.R.color.transparent); semble être suffisant
Garçon

call method getActionBar () .... est une meilleure solution à ce problème (supprimer l'icône de la barre d'action) car si vous utilisez la barre de navigation et la barre d'action, votre barre d'action sera donc au-dessus de la barre de navigation. Si vous utilisez setDisplayShowHomeEnabled (false), la barre de navigation sera sur la barre d'action et vous ne le souhaitez pas.
horkavlna

Je changerais cela en: ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); Sans définir les limites, l'icône transparente utilise toujours de l'espace
Aedis

1
@Aedis: affiche toujours un espace vide à gauche de la barre d'actions. Aucune suggestion?
Rowan

Cela fonctionne bien si vous n'avez pas défini de logo. Dans mon cas, j'ai dû utiliser à la setLogoplace de la setIconméthode. Pourtant, bon conseil, m'a mis sur la bonne voie !!
luiscosta

49

Cela a fonctionné pour moi

getActionBar().setDisplayShowHomeEnabled(false);

2
Cela place la barre d'action sous les onglets / barre de navigation. Apparemment, ce comportement est "par conception" ... code.google.com/p/android/issues/detail?id=36191
Roger Keays

Cela ne répond en aucun cas à la question. Je connaissais cette fonctionnalité, mais je demandais du XML!
Hrafn

Cela semble être la réponse - sinon vous appliquez une solution globale, dont je doute que ce soit ce que tout le monde souhaite. Dans mon cas, je souhaite afficher le logo sur certaines pages, mais sur d'autres pages, cela n'a pas de sens et encombre la barre d'action.
DiscDev

28

Appel

mActionBar.setDisplayHomeAsUpEnabled(true);

en plus de,

mActionBar.setDisplayShowHomeEnabled(false);

masquera le logo mais affichera l'icône Home As Up. :)


Cela ne répond en aucun cas à la question. Je connaissais cette fonctionnalité, mais je demandais du XML!
Hrafn

@Hrafn - Je pensais que XML était la réponse préférée et non la SEULE réponse. : (Je suppose que cela aide encore les gens. :)
Atul O Holic

15

Soit conscient que:

<item name="android:icon">@android:color/transparent</item>

Rendra également vos éléments d'options transparents.


13
    //disable application icon from ActionBar
    getActionBar().setDisplayShowHomeEnabled(false);

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);

Cela ne répond en aucun cas à la question. Je connaissais cette fonctionnalité, mais je demandais du XML!
Hrafn

12
getActionBar().setIcon(android.R.color.transparent);

Cela a fonctionné pour moi.


11

Supprimez ou affichez le titre en utilisant:

getActionBar().setDisplayShowTitleEnabled(true);

Supprimez ou affichez le logo en utilisant:

getActionBar().setDisplayUseLogoEnabled(false);

Enlever tout:

getActionBar().setDisplayShowHomeEnabled(false);

Cela ne répond en aucun cas à la question. Je connaissais cette fonctionnalité, mais je demandais du XML!
Hrafn

9

vous pouvez également ajouter le code ci-dessous dans AndroidManifest.xml .

android:icon="@android:color/transparent"

Cela fonctionnera très bien.

Mais j'ai trouvé que cela posait un problème car l'icône du lanceur devenait également transparente.

J'ai donc utilisé:

getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));

et cela a bien fonctionné.

Mais si vous avez plus d'une activité et que vous souhaitez rendre l'icône d'une activité transparente, l'approche précédente fonctionnera.


2

J'ai utilisé ceci et cela a fonctionné pour moi.

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));

Cela ne répond en aucun cas à la question. Je connaissais cette fonctionnalité, mais je demandais du XML!
Hrafn

2
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);

Bienvenue dans Stack Overflow! Habituellement, des réponses similaires aux vôtres sont considérées comme de mauvaise qualité. Pour référence future, vous devriez envisager d'ajouter quelques explications sur le code que vous avez fourni et vous devriez mieux structurer le code (ajoutez 4 espaces au début de chaque ligne, ou sélectionnez-le tout et cliquez sur le symbole {} au-dessus de la zone de texte.) Aussi, vous devriez prêter plus d'attention à la date de la question (il y a plus d'un an) et au fait qu'elle a déjà reçu une réponse (le signe de la coche verte). Bonne chance pour votre programmation :)
Hristo Valkanov

Cela ne répond en aucun cas à la question. Je connaissais cette fonctionnalité, mais je demandais du XML!
Hrafn

1

Je pense que la réponse exacte est: pour api 11 ou supérieur:

getActionBar().setDisplayShowHomeEnabled(false);

autrement:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(car il a besoin d'une bibliothèque de support.)


Cela ne répond en aucun cas à la question. Je connaissais cette fonctionnalité, mais je demandais du XML!
Hrafn

1

accédez à votre manifeste et recherchez le tag d'application

  android:icon="@android:color/transparent"// simply add this on place of your icon

..... ... ...


0

La réponse de Qiqi Abaziz est correcte, mais j'ai toujours eu du mal à le faire fonctionner avec le pack de compatibilité et à appliquer le style aux bons éléments. De plus, le piratage de la transparence est inutile. Voici donc un exemple complet fonctionnant pour la v8 et les versions ultérieures:

valeurs \ styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyActivityTheme" parent="@style/Theme.AppCompat">
        <item name="actionBarStyle">@style/NoLogoActionBar</item> <!-- pre-v11-compatibility -->
        <item name="android:actionBarStyle">@style/NoLogoActionBar</item>
    </style>
    <style name="NoLogoActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="displayOptions">showHome</item> <!-- pre-v11-compatibility -->
        <item name="android:displayOptions">showHome</item>
    </style>
</resources>

AndroidManifest.xml (shell)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">   
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19"/>
    <application android:theme="@android:style/Theme.Light.NoTitleBar">
        <activity android:theme="@style/PentActivityTheme"/>
    </application>
</manifest>

0

Allez dans votre manifeste et trouvez votre activité puis ajoutez ce code:

android:theme="@android:style/Theme.NoTitleBar"

au-dessus de la ligne cachez votre Actionbar.

Si vous avez besoin d'une autre fonctionnalité, vous pouvez voir d'autres options avec (CLR + SPC).


0

Le moyen le plus rapide est de modifier votre Manifest.xml. Si, par exemple, vous souhaitez supprimer le logo de l'activité "Activité" et laisser le logo dans d'autres activités, vous pouvez effectuer les opérations suivantes:

<activity
      android:name=".home.XActivity"
      android:logo="@android:color/transparent"
      android:configChanges="orientation|keyboardHidden" />
 <activity
      android:name=".home.HomeActivity"
      android:configChanges="orientation|keyboardHidden" />

0

Aucun des éléments ci-dessus n'a fonctionné.

Mais cela a fait l'affaire:

override fun onCreate() {
    setContentView(R.layout.activity_main)

    setSupportActionBar(toolbar)
    toolbar.logo = null

(icône supprimée de la barre d'outils)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.