El icono de la aplicación no es visible en la barra de Acción de android lolipop y superior

Acabo de migrar de api 19 Kitkat a api 21 Lollipop. Y ahora he encontrado que el icono de la aplicación no está en la barra de acción. Creo que mi aplicación parece diferente. Así que hay alguna manera de mostrar el icono de la aplicación. Gracias por cualquier ayuda 🙂

En el tema Material (y AppCompat versión 21 que se basa en ello), la barra de acción sigue las directrices de diseño de material y utiliza una barra de herramientas :

  • 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 allí contenido. 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, debe considerar detenidamente la omisión de un título y un subtítulo.

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

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

También me gustaría mostrar mi icono de aplicación impresionante en Lollipop +, así que aquí está lo que usé.

 mActionBar.setDisplayShowHomeEnabled(true); mActionBar.setIcon(Drawable); // Or drawable resource id. 

Fuente: ActionBar # setDisplayShowHomeEnabled (boolean)

Esto funcionó para mí –

 getSupportActionBar().setTitle("Title"); getSupportActionBar().setSubtitle("Subtitle"); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_USE_LOGO); // Customize if you need to getSupportActionBar().setIcon(R.drawable.iconhere); // or setLogo 

Es importante que setDisplayOptions como setIcon / setLogo no parece estar funcionando sin él. Respuesta original: el ícono de la aplicación app compat actionbar v21 no se muestra

Este código funcionó en mi dispositivo. Avíseme si tiene alguna pregunta adicional.

Así es como lo hice:

 package com.your.package; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setIcon(R.drawable.your_icon); } } 

Que le dará esto:

Introduzca aquí la descripción de la imagen

Usted tiene que utilizar la barra de herramientas en su aplicación como a continuación.

Styles.xml

 <!-- Base application theme. --> <style name="AppTheme" parent="AppTheme.Base"> <!-- Customize your theme here. --> </style> <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> </style> 

V21 \ styles.xml

 <resources> <style name="AppTheme" parent="AppTheme.Base"> <item name="android:windowContentTransitions">true</item> <item name="android:windowAllowEnterTransitionOverlap">true</item> <item name="android:windowAllowReturnTransitionOverlap">true</item> <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> <item name="android:windowSharedElementExitTransition">@android:transition/move</item> <item name="android:textColorPrimary">@color/textColorPrimary</item> <item name="android:windowBackground">@color/windowBackground</item> <item name="android:navigationBarColor">@color/navigationBarColor</item> </style> </resources> 

En su diseño use la barra de herramientas como esta:

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="false" android:focusable="false" android:focusableInTouchMode="false"> <RelativeLayout xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/windowBackground"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:minHeight="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> </android.support.v7.widget.Toolbar> <FrameLayout android:id="@+id/flContent" android:visibility="gone" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/toolbar"> </FrameLayout> </RelativeLayout> </android.support.v4.widget.DrawerLayout> 

En su archivo Java escriba abajo el código para el icono de conjunto:

 toolbar = (Toolbar) findViewById(R.id.toolbar); if (toolbar != null) { setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.icn_menu); //toolbar.setTitle("Title"); setTitle("Title"); //toolbar.setSubtitle("Subtitle"); //toolbar.setLogo(R.drawable.ic_launcher); } 

Prueba esto:-

 getSupportActionBar.setDisplayHomeAsUpEnabled(true); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.