Rimuovi icona / logo dalla barra delle azioni su Android


146

Ho cercato di trovare un modo per rimuovere l'icona / logo dalla barra delle azioni, ma l'unica cosa che ho trovato dopo un'ora di ricerca SO, la documentazione di Android e Google è come rimuovere la barra del titolo nel suo insieme. Non è quello che voglio. Desidera solo rimuovere l'icona / logo dalla barra del titolo.

Qualcuno sa come realizzare questo? Preferibilmente vorrei farlo in XML .


1
Avresti potuto semplicemente leggere la guida API sulla barra delle azioni. Lo dice proprio nella guida.
Mgamerz,

6
Ogni informazione è da qualche parte da trovare.
Hrafn,

puoi mostrarci cosa hai provato? cosa hai trovato in precedenza che non funziona?
DForck42,

@ DForck42 Questa domanda non è più rilevante (quasi 4 anni). Puoi trovare molti modi per raggiungere questo obiettivo nelle risposte qui sotto.
Hrafn,

Risposte:


58

Se hai definito android:logo="..."il <application>tag del tuo AndroidManifest.xml, allora devi usare questa roba per nascondere l'icona:

tema pre-v11

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

v11 e fino a tema

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

L'uso di questi due stili ha nascosto correttamente l'icona della barra delle azioni su un dispositivo 2.3 e 4.4 (questa app utilizza AppCompat ).


Funziona, ma nel mio caso, quando ho una vista di ricerca e faccio clic su di essa / espanderla, ricompare l'icona / logo della mia app. Qualche idea?
acrespo,

@acrespo hmm So di cosa stai parlando ma non ho studiato una soluzione per quella, scusa.
Charles Madere,

1
Quello che ho finito per fare è l'impostazione <application (...) android:logo="@android:color/transparent"> (...)nel mio AndroidManifest.xmle costringendo useLogoper displayOptionsnel mio stile come questo <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>. Quest'ultima parte è stata importante come in alcuni dispositivi (penso principalmente post-lecca-lecca) la maledetta ricerca ha preso l'appIcon e l'ha messa al posto del logo, anche se il logo è stato impostato come trasparente: s
acrespo

228

Aggiungi il seguente codice negli stili della barra delle azioni:

<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: sto usando Actionbar Sherlock e questo funziona bene.


2
Un bel trucco, grazie! Smette persino di occupare spazio nella barra delle azioni!
Igor Čordaš,

6
Grazie .. ha funzionato anche in codice ... actionBar.setIcon (android.R.color.transparent);
Jagdeep Singh,

1
Ottima risposta ... :)
Bytecode

24
Alcuni dispositivi Samsung vengono visualizzati @android:color/transparentcome NERO. Sembra folle, ma molti produttori di dispositivi hanno la precedenza sulle impostazioni predefinite di Android; compresi i colori. Per questo motivo, vorrei creare un colore in colors.xml come questo: <color name="transparent">#00000000</color>e fare riferimento a questo invece di ottenere il valore da Android.
Matt W,

1
@jose_GD: android: displayOptions è solo v11 e up, quindi è necessario che entrambi siano compatibili con le versioni precedenti.
Nilzor,

115

Se non si desidera l'icona in una determinata attività.

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

45
. getActionBar () setIcon (android.R.color.transparent); sembra essere sufficiente
Boy

chiama il metodo getActionBar () .... è la soluzione migliore a questo problema (rimuovi l'icona dalla barra delle azioni) perché se usi la barra di navigazione e la barra delle azioni, la tua barra delle azioni sarà sopra la barra di navigazione. Se usi setDisplayShowHomeEnabled (false), la barra di navigazione sarà sulla barra delle azioni e non vuoi farlo.
Horkavlna,

Vorrei cambiare questo in: ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); Senza impostare i limiti, l'icona trasparente consuma ancora spazio
Aedis

1
@Aedis: mostra ancora spazio vuoto a sinistra della barra delle azioni. eventuali suggerimenti?
Rowan,

Funziona bene se non hai impostato un logo. Nel mio caso ho dovuto usare al setLogoposto del setIconmetodo. Comunque, ottimo consiglio, mi ha portato sulla strada giusta !!
luiscosta,

49

Questo ha funzionato per me

getActionBar().setDisplayShowHomeEnabled(false);

2
Questo mette la barra delle azioni sotto le schede / barra di navigazione. Apparentemente questo comportamento è "di progettazione" ... code.google.com/p/android/issues/detail?id=36191
Roger Keays,

Non risponde comunque alla domanda. Conoscevo questa funzione, ma chiedevo XML!
Hrafn,

Sembra che dovrebbe essere la risposta, altrimenti stai applicando una soluzione globale, che dubito sia ciò che tutti vogliono. Nel mio caso, voglio mostrare il logo su alcune pagine, ma altre pagine non ha senso e ingombra la barra delle azioni.
DiscDev,

28

chiamata

mActionBar.setDisplayHomeAsUpEnabled(true);

inoltre,

mActionBar.setDisplayShowHomeEnabled(false);

nasconderà il logo ma visualizzerà l'icona Home As Up. :)


Non risponde comunque alla domanda. Conoscevo questa funzione, ma chiedevo XML!
Hrafn,

@Hrafn - Pensavo che XML fosse la risposta preferita non l'UNICA risposta. :( Immagino che aiuti ancora le persone. :)
Atul O Holic,

15

Fai attenzione a:

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

Renderà anche trasparenti le tue opzioni.


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

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

Non risponde comunque alla domanda. Conoscevo questa funzione, ma chiedevo XML!
Hrafn,

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

Questo ha funzionato per me.


11

Rimuovi o mostra il titolo usando:

getActionBar().setDisplayShowTitleEnabled(true);

Rimuovi o mostra il logo usando:

getActionBar().setDisplayUseLogoEnabled(false);

Rimuovi tutto:

getActionBar().setDisplayShowHomeEnabled(false);

Non risponde comunque alla domanda. Conoscevo questa funzione, ma chiedevo XML!
Hrafn,

9

puoi anche aggiungere il codice seguente in AndroidManifest.xml .

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

Funzionerà benissimo.

Ma ho scoperto che questo crea un problema poiché anche l'icona di avvio diventa trasparente.

Quindi ho usato:

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

e ha funzionato bene.

Ma se hai più di un'attività e vuoi rendere trasparente l'icona su un'attività, l'approccio precedente funzionerà.


2

L'ho usato e ha funzionato per me.

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

Non risponde comunque alla domanda. Conoscevo questa funzione, ma chiedevo XML!
Hrafn,

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

Benvenuto in Stack Overflow! Di solito le risposte simili alle tue sono considerate di qualità piuttosto bassa. Per riferimento futuro dovresti considerare di aggiungere alcune spiegazioni sul codice che hai fornito e dovresti strutturare meglio il codice (aggiungi 4 spazi all'inizio di ogni riga o selezionalo tutto e fai clic sul simbolo {} sopra la casella di testo.) Inoltre, dovresti prestare maggiore attenzione alla data della domanda (oltre un anno fa) e al fatto che abbia già ricevuto risposta (il segno di spunta verde). Buona fortuna per la tua programmazione :)
Hristo Valkanov,

Non risponde comunque alla domanda. Conoscevo questa funzione, ma chiedevo XML!
Hrafn,

1

Penso che la risposta esatta sia: per api 11 o superiore:

getActionBar().setDisplayShowHomeEnabled(false);

altrimenti:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(perché ha bisogno di una libreria di supporto.)


Non risponde comunque alla domanda. Conoscevo questa funzione, ma chiedevo XML!
Hrafn,

1

vai al tuo manifest e trova il tag dell'applicazione

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

..... ... ...


0

La risposta di Qiqi Abaziz è ok, ma ho ancora faticato a lungo a farlo funzionare con il pacchetto di compatibilità e ad applicare lo stile agli elementi corretti. Inoltre, l'hack trasparente è inutile. Ecco quindi un esempio completo che funziona per v8 e versioni successive:

valori \ 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

Vai nel tuo manifest e trova la tua attività, quindi aggiungi questo codice:

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

sopra la linea nascondi il tuo Actionbar.

Se hai bisogno di altre funzionalità puoi vedere altre opzioni con (CLR + SPC).


0

Il modo più veloce è modificare il tuo Manifest.xml. Se ad esempio si desidera rimuovere il logo dell'attività "Attività" e lasciare il logo in altre attività, è possibile effettuare le seguenti operazioni:

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

0

Nessuna delle precedenti ha funzionato.

Ma questo ha funzionato:

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

    setSupportActionBar(toolbar)
    toolbar.logo = null

(icona rimossa dalla barra degli strumenti)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.