Remover ícone / logotipo da barra de ação no android

146

Eu tenho tentado encontrar uma maneira de remover o ícone / logotipo da barra de ação, mas a única coisa que encontrei depois de uma hora pesquisando no SO, na documentação do Android e no Google é como remover a barra de título por inteiro. Não é isso que eu quero. Deseja apenas remover o ícone / logotipo da barra de título.

Alguém sabe como fazer isso? De preferência, eu gostaria de fazer isso em XML .

Hrafn
fonte
1
Você pode ter acabado de ler o guia da API na barra de ação. Diz isso exatamente no guia.
Mgamerz 30/01
6
Toda informação está em algum lugar para ser encontrada.
Hrafn 31/01
você pode nos mostrar o que tentou? o que você encontrou anteriormente que não funciona?
precisa saber é o seguinte
@ DForck42 Esta questão realmente não é mais relevante (quase 4 anos). Você pode encontrar muitas maneiras de conseguir isso nas respostas aqui abaixo.
Hrafn

Respostas:

58

Se você definiu android:logo="..."na <application>tag sua AndroidManifest.xml, precisará usar essas coisas para ocultar o ícone:

tema pré-v11

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

tema v11 e superior

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

O uso desses dois estilos ocultou corretamente o ícone da barra de ação em um dispositivo 2.3 e 4.4 para mim (este aplicativo usa AppCompat ).

Charles Madere
fonte
Isso funciona, mas no meu caso, quando tenho uma visualização de pesquisa e clica nela / expande, o ícone / logotipo do meu aplicativo reaparece. Alguma ideia?
acrespo 07/07/2015
@acrespo hmm Eu sei do que você está falando, mas não investiguei uma solução para essa, desculpe.
Charles Madere
1
O que eu acabei fazendo é configuração <application (...) android:logo="@android:color/transparent"> (...)no meu AndroidManifest.xmle forçando useLogopara displayOptionsem meu estilo como este <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>. Esta última parte foi importante como em alguns dispositivos (acho que principalmente pós-pirulito) a SearchView condenado tomou a appicon e colocá-lo no lugar do logotipo, mesmo se logotipo foi definido como transparente: s
acrespo
228

Adicione o seguinte código nos seus estilos de barra de ação:

<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: Estou usando o Actionbar Sherlock e isso funciona muito bem.

Qiqi Abaziz
fonte
2
Muito bom truque, obrigado! Ele até para de ocupar espaço na barra de ação!
Igor Čordaš
6
Obrigado .. também funcionou em código ... actionBar.setIcon (android.R.color.transparent);
Jagdeep Singh
1
Resposta excelente ... :)
Bytecode
24
Alguns dispositivos Samsung são exibidos @android:color/transparentcomo PRETO. Parece loucura, mas muitos fabricantes de dispositivos substituem as configurações padrão do Android; incluindo cores. Por causa disso, eu criaria uma cor em colors.xml assim: <color name="transparent">#00000000</color>e referenciaria isso em vez de obter o valor do Android.
Matt W
1
@jose_GD: android: displayOptions é apenas a v11 e superior, portanto, é necessário que ambos sejam compatíveis com versões anteriores.
Nilzor
115

Se você não deseja o ícone em uma atividade específica.

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    
Laksh
fonte
45
getActionBar (). setIcon (android.R.color.transparent); parece ser suficiente
Boy
call method getActionBar () .... é a melhor solução para este problema (remova o ícone da barra de ação) porque se você usar a barra de navegação e a barra de ação, sua barra de ação estará acima da barra de navegação. Se você usar setDisplayShowHomeEnabled (false), a barra de navegação estará sobre a barra de ação e você não deseja isso.
horkavlna
Gostaria de mudar isso: ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); Sem definir os limites, o ícone transparente ainda usa espaço
Aedis
1
@ Aedis: ainda mostra o espaço vazio à esquerda da barra de ação. alguma sugestão?
30915 Rowan
Isso funciona bem se você não definiu um logotipo. No meu caso, eu tive que usar em setLogovez de setIconmétodo. Ainda assim, ótima dica, me colocou no caminho certo !!
luiscosta
49

Isso funcionou para mim

getActionBar().setDisplayShowHomeEnabled(false);
Brune
fonte
2
Isso coloca a barra de ação sob as guias / barra de navegação. Aparentemente, esse comportamento é "por design" ... code.google.com/p/android/issues/detail?id=36191
Roger Keays
De maneira alguma isso responde à pergunta. Eu sabia sobre esse recurso, mas estava pedindo XML!
Hrafn
Parece que deve ser a resposta - caso contrário, você está aplicando uma solução global, que duvido que seja o que todos querem. No meu caso, quero mostrar o logotipo em algumas páginas, mas em outras páginas não faz sentido e atravessa a barra de ação.
DiscDev 21/07
28

Chamando

mActionBar.setDisplayHomeAsUpEnabled(true);

além de,

mActionBar.setDisplayShowHomeEnabled(false);

ocultará o logotipo, mas exibirá o ícone Home As Up. :)

Atul O Holic
fonte
De maneira alguma isso responde à pergunta. Eu sabia sobre esse recurso, mas estava pedindo XML!
Hrafn
@ Hrafn - eu pensei que XML era a resposta preferida, não a única resposta. :( Acho que ainda está ajudando as pessoas. :)
Atul O Holic
15

Esteja ciente que:

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

Também tornará seus itens de opções transparentes.

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

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);
Pawel Miechowiecki
fonte
De maneira alguma isso responde à pergunta. Eu sabia sobre esse recurso, mas estava pedindo XML!
Hrafn
12
getActionBar().setIcon(android.R.color.transparent);

Isso funcionou para mim.

dn_c
fonte
11

Remova ou mostre o título usando:

getActionBar().setDisplayShowTitleEnabled(true);

Remova ou mostre o logotipo usando:

getActionBar().setDisplayUseLogoEnabled(false);

Deletar tudo:

getActionBar().setDisplayShowHomeEnabled(false);
Tiago Gouvêa
fonte
De maneira alguma isso responde à pergunta. Eu sabia sobre esse recurso, mas estava pedindo XML!
Hrafn
9

você também pode adicionar o código abaixo no AndroidManifest.xml .

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

Vai funcionar bem.

Mas descobri que isso causa um problema, pois o ícone do iniciador também se torna transparente.

Então eu usei:

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

e funcionou bem.

Mas se você está tendo mais de uma atividade e deseja tornar transparente o ícone em uma atividade, a abordagem anterior funcionará.

Sam
fonte
2

Eu usei isso e funcionou para mim.

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));
user2900761
fonte
De maneira alguma isso responde à pergunta. Eu sabia sobre esse recurso, mas estava pedindo XML!
Hrafn
2
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);
user3748515
fonte
Bem-vindo ao Stack overflow! Normalmente, respostas semelhantes às suas são consideradas de qualidade bastante baixa. Para referência futura, considere adicionar algumas explicações sobre o código que você forneceu e estruture melhor o código (adicione 4 espaços ao início de cada linha ou selecione tudo e clique em tudo e clique no símbolo {} acima da caixa de texto.) Além disso, você deve prestar mais atenção à data da pergunta (mais de um ano atrás) e ao fato de ela já ter sido respondida (o sinal de verificação verde). Boa sorte em sua programação :)
Hristo Valkanov
De maneira alguma isso responde à pergunta. Eu sabia sobre esse recurso, mas estava pedindo XML!
Hrafn
1

Eu acho que a resposta exata é: para API 11 ou superior:

getActionBar().setDisplayShowHomeEnabled(false);

de outra forma:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(porque precisa de uma biblioteca de suporte.)

David
fonte
De maneira alguma isso responde à pergunta. Eu sabia sobre esse recurso, mas estava pedindo XML!
Hrafn
1

vá ao seu manifesto e encontre a tag do aplicativo

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

..... ... ...

Avinash Ajay Pandey
fonte
0

A resposta de Qiqi Abaziz está bem, mas ainda luto por um longo tempo para que ele funcione com o pacote de compatibilidade e aplique o estilo aos elementos corretos. Além disso, o hack da transparência é desnecessário. Então, aqui está um exemplo completo trabalhando para a v8 e posterior:

values ​​\ 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>
Nilzor
fonte
0

Vá no seu manifesto e encontre a sua atividade e adicione este código:

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

acima da linha esconda o seu Actionbar.

Se você precisar de outro recurso, poderá ver outras opções com (CLR + SPC).

AA
fonte
0

A maneira mais rápida é modificar o seu Manifest.xml. Se, por exemplo, você deseja remover o logotipo da atividade "Atividade" e deixar o logotipo em outras atividades, faça o seguinte:

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

Nenhuma das opções acima funcionou.

Mas isso fez o truque:

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

    setSupportActionBar(toolbar)
    toolbar.logo = null

(ícone removido da barra de ferramentas)

Dan Alboteanu
fonte