Sin icono de aplicación en ActionBar

Aquí hay muchas consultas sobre cómo agregar icons a ActionBar, pero ninguna solucionó mi problema. Si conoce un duplicado de esta pregunta, siéntase libre de comentar o cerrar esta pregunta.

Migré mi proyecto a IntelliJ y no encontré este problema con mi IDE anterior (Eclipse).

PROBLEMA: El ícono de la aplicación no se muestra en la barra de acciones.

enter image description here

Creo que se supone que debe agregarse por defecto, por eso no puedo agregarlo a través de su XML

enter image description here

Aquí está su XML

   

¡Gracias!

A partir de la versión 21 de AppCompat, la barra de acciones sigue las pautas de diseño del material y utiliza una barra de herramientas :

  • Un título y subtítulo. El título debe ser una señal para la posición actual de la barra de herramientas en la jerarquía de navegación y el contenido que contiene. El subtítulo, si está presente, debe indicar cualquier información extendida sobre el contenido actual. Si una aplicación utiliza una imagen de logotipo, debería considerar la posibilidad de omitir un título y subtítulo.

En las interfaces de usuario de Android modernas, los desarrolladores deberían apoyarse más en un esquema de colores visualmente distinto para las barras de herramientas que en su icono de aplicación. El uso del icono de la aplicación más el título como diseño estándar no se recomienda en los dispositivos con API 21 o posteriores.

Sin embargo, si desea un icono de aplicación, setLogo () es el método correcto.

Actualice su método onCreate () con el siguiente código.

  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setLogo(R.drawable.ic_launcher); getSupportActionBar().setDisplayUseLogoEnabled(true); setContentView(R.layout.activity_main); } 

Funcionó para mí Nota: ic_launcher es el icono que desea mostrar en su barra de acciones, para eso tendrá que agregar el ícono en la carpeta dibujable de su proyecto de aplicación.

IN Style.xml

   

En actividad, agrega esto y prueba

 ActionBar mActionBar = getSupportActionBar(); mActionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME); 

Si no le importa el tema Material y está bien tener una Actividad que se parece más al estilo JellyBean / Kitkat e incluye el icono en la Barra de acciones, puede hacer lo siguiente:

Primero, cambie la configuración de temas en styles.xml a partir de esto:

  

A esto:

  

Ahora cambie todas sus Actividades para heredar de android.app.Activity en lugar de android.support.v7.app.ActionBarActivity. Es decir:

Cambia esto:

 import android.support.v7.app.ActionBarActivity; public class MainActivity extends ActionBarActivity{ 

A esto:

 import android.app.Activity; public class MainActivity extends Activity { 

El final del resultado de hacer ambos pasos anteriores es que el ícono especificado por el ícono android: icon en AndroidManifest.xml aparecerá en la Barra de acciones.

Realmente funciona. Pruebe esto … Incluya estas líneas en su método onCreate,

 ActionBar menu = getSupportActionBar(); menu.setDisplayShowHomeEnabled(true); menu.setIcon(R.mipmap.jerry); 

Además, asegúrese de que jerry es un archivo de imagen .png disponible en la carpeta mipmap. Para obtener el ícono exactamente al comienzo de su barra de acción, tenga el archivo jerry en todos los tamaños de pantalla como (hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi, etc.) en la carpeta mipmap.

Configuración de icono en la barra de acción

Mostrar icono en la barra de acción puede engañar fácilmente a cualquier desarrollador en problemas. Tenga en cuenta este método simple y nunca lo pondrá en problemas.

Si su activity se extiende Actividad ,

 getActionBar().setDisplayShowHomeEnabled(true); 

Si su activity se extiende a AppCompatActivity ,

 ActionBar actionBar= getSupportActionBar(); actionBar.setIcon(R.mipmap.ic_launcher); actionBar.setDisplayShowHomeEnabled(true); 

Siempre funciona para nosotros, tenlo en cuenta .