Eliminar el icono / logotipo de la barra de acción en Android

146

He estado tratando de encontrar alguna forma de eliminar el ícono / logotipo de la barra de acción, pero lo único que encontré después de una hora de buscar SO, la documentación de Android y Google es cómo eliminar la barra de título en su totalidad. Eso no es lo que quiero. Solo desea eliminar el icono / logotipo de la barra de título.

¿Alguien sabe cómo lograr esto? Preferiblemente me gustaría hacer esto en XML .

Hrafn
fuente
1
Podrías haber leído la guía API en la barra de acción. Lo dice justo en la guía.
Mgamerz
66
Cada pieza de información se encuentra en algún lugar.
Hrafn
¿Puedes mostrarnos lo que has probado? ¿Qué has encontrado anteriormente que no funciona?
DForck42
@ DForck42 Esta pregunta ya no es relevante (hace casi 4 años). Puede encontrar muchas maneras de lograr esto en las respuestas a continuación.
Hrafn

Respuestas:

58

Si ha definido android:logo="..."en la <application>etiqueta de su AndroidManifest.xml, entonces necesita usar estas cosas para ocultar el icono:

tema anterior a v11

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

tema v11 y superior

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

El uso de estos dos estilos ha ocultado correctamente el icono de la barra de acción en un dispositivo 2.3 y 4.4 (esta aplicación usa AppCompat ).

Charles Madere
fuente
Esto funciona, pero en mi caso, cuando tengo una vista de búsqueda y hago clic en ella / la expando, vuelve a aparecer el ícono / logotipo de mi aplicación. ¿Algunas ideas?
acrespo
@acrespo hmm Sé de lo que estás hablando, pero no he investigado una solución para eso, lo siento.
Charles Madere
1
Lo que terminé haciendo es establecer <application (...) android:logo="@android:color/transparent"> (...)mi estilo AndroidManifest.xmly forzarlo useLogode displayOptionsesta manera <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>. Esta última parte fue importante ya que en algunos dispositivos (creo que principalmente después de la piruleta) la maldita vista de búsqueda tomó la aplicación y la colocó en lugar del logotipo, incluso si el logotipo se estableció como transparente: s
acrespo
228

Agregue el siguiente código en sus estilos de barra de acción:

<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! -->

PD: Estoy usando Actionbar Sherlock y esto funciona bien.

Qiqi Abaziz
fuente
2
Todo un buen truco, gracias! ¡Incluso deja de ocupar espacio en la barra de acción!
Igor Čordaš
66
Gracias ... también funcionó en código ... actionBar.setIcon (android.R.color.transparent);
Jagdeep Singh
1
Excelente respuesta ... :)
Bytecode
24
Algunos dispositivos Samsung se muestran @android:color/transparenten NEGRO. Parece una locura, pero muchos fabricantes de dispositivos anulan la configuración predeterminada de Android; Incluyendo colores. Debido a esto, crearía un color en colors.xml como este: <color name="transparent">#00000000</color>y haría referencia a eso en lugar de obtener el valor de Android.
Matt W
1
@jose_GD: android: displayOptions es solo v11 y superior, por lo que necesita que ambos sean compatibles con versiones anteriores.
Nilzor
115

Si no desea el icono en una actividad particular.

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    
Laksh
fuente
45
getActionBar (). setIcon (android.R.color.transparent); parece ser suficiente
Boy
El método de llamada getActionBar () ... es una mejor solución a este problema (eliminar el icono de la barra de acción) porque si usa la barra de navegación y la barra de acción, su barra de acción estará por encima de la barra de navegación. Si usa setDisplayShowHomeEnabled (false), la barra de navegación estará sobre la barra de acción y no desea esto.
horkavlna
Cambiaría esto a: ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); Sin establecer los límites, el ícono transparente todavía usa espacio
Aedis
1
@Aedis: todavía muestra el espacio vacío a la izquierda de la barra de acción. ¿alguna sugerencia?
Rowan
Esto funciona bien si no ha configurado un logotipo. En mi caso tuve que usar en setLogolugar de setIconmétodo. Aún así, un gran consejo, ¡me llevó por el camino correcto!
luiscosta
49

Esto funciono para mi

getActionBar().setDisplayShowHomeEnabled(false);
Brune
fuente
2
Esto coloca la barra de acción debajo de las pestañas / barra de navegación. Aparentemente, este comportamiento es "por diseño" ... code.google.com/p/android/issues/detail?id=36191
Roger Keays
De ninguna manera esto responde la pregunta. ¡Conocía esta característica, pero estaba pidiendo XML!
Hrafn
Parece que esta debería ser la respuesta; de lo contrario, está aplicando una solución global, que dudo que sea lo que todos quieren. En mi caso, quiero mostrar el logotipo en algunas páginas, pero en otras páginas no tiene sentido y abarrota la barra de acción.
DiscDev
28

Vocación

mActionBar.setDisplayHomeAsUpEnabled(true);

además de,

mActionBar.setDisplayShowHomeEnabled(false);

ocultará el logotipo pero mostrará el icono de Inicio como arriba. :)

Atul O Holic
fuente
De ninguna manera esto responde la pregunta. ¡Conocía esta característica, pero estaba pidiendo XML!
Hrafn
@Hrafn: pensé que XML era la respuesta preferida, no la ÚNICA respuesta. :( Creo que todavía está ayudando a la gente. :)
Atul O Holic
15

Sé consciente de:

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

También hará que sus elementos de opciones sean transparentes.

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

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);
Pawel Miechowiecki
fuente
De ninguna manera esto responde la pregunta. ¡Conocía esta característica, pero estaba pidiendo XML!
Hrafn
12
getActionBar().setIcon(android.R.color.transparent);

Esto funcionó para mí.

dn_c
fuente
11

Eliminar o mostrar el título usando:

getActionBar().setDisplayShowTitleEnabled(true);

Eliminar o mostrar el logotipo con:

getActionBar().setDisplayUseLogoEnabled(false);

Eliminar todo:

getActionBar().setDisplayShowHomeEnabled(false);
Tiago Gouvêa
fuente
De ninguna manera esto responde la pregunta. ¡Conocía esta característica, pero estaba pidiendo XML!
Hrafn
9

También puede agregar el siguiente código en AndroidManifest.xml .

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

Funcionará bien

Pero descubrí que esto da un problema ya que el ícono del iniciador también se vuelve transparente.

Entonces usé:

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

Y funcionó bien.

Pero si tiene más de una actividad y desea hacer que el ícono de una actividad sea transparente, el enfoque anterior funcionará.

Sam
fuente
2

Usé esto y funcionó para mí.

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));
usuario2900761
fuente
De ninguna manera esto responde la pregunta. ¡Conocía esta característica, pero estaba pidiendo XML!
Hrafn
2
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);
usuario3748515
fuente
¡Bienvenido al desbordamiento de pila! Por lo general, las respuestas similares a las suyas se consideran de baja calidad. Para referencia futura, debe considerar agregar algunas explicaciones sobre el código que proporcionó y debe estructurar mejor el código (agregue 4 espacios al comienzo de cada línea, o selecciónelo todo y haga clic en el símbolo {} sobre el cuadro de texto). Además, debe prestar más atención a la fecha de la pregunta (hace más de un año) y al hecho de que ya ha sido respondida (el signo de verificación verde). Buena suerte en tu programación :)
Hristo Valkanov
De ninguna manera esto responde la pregunta. ¡Conocía esta característica, pero estaba pidiendo XML!
Hrafn
1

Creo que la respuesta exacta es: para la API 11 o superior:

getActionBar().setDisplayShowHomeEnabled(false);

de otra manera:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(porque necesita una biblioteca de soporte).

David
fuente
De ninguna manera esto responde la pregunta. ¡Conocía esta característica, pero estaba pidiendo XML!
Hrafn
1

vaya a su manifiesto y encuentre la etiqueta de la aplicación

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

..... ... ...

Avinash Ajay Pandey
fuente
0

La respuesta de Qiqi Abaziz está bien, pero aún luché durante mucho tiempo para que funcione con el paquete de compatibilidad y para aplicar el estilo a los elementos correctos. Además, el hack de transparencia es innecesario. Así que aquí hay un ejemplo completo que funciona para v8 y versiones posteriores:

valores \ 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
fuente
0

Vaya a su manifiesto y encuentre su actividad, luego agregue este código:

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

encima de la línea esconde tu Actionbar.

Si necesita otra función, puede ver otras opciones con (CLR + SPC).

Automóvil club británico
fuente
0

La forma más rápida es modificar su Manifest.xml. Si, por ejemplo, desea eliminar el logotipo de la actividad "Actividad" y dejar el logotipo en otras actividades, puede hacer lo siguiente:

<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
fuente
0

Ninguno de los anteriores funcionó.

Pero esto hizo el truco:

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

    setSupportActionBar(toolbar)
    toolbar.logo = null

(icono eliminado de la barra de herramientas)

Dan Alboteanu
fuente