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 .


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 ).


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.


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)));    

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);

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. :)


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.


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

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

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í.


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);

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á.


2

Usé esto y funcionó para mí.

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

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);

¡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).


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

..... ... ...


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>

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).


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" />

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)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.