support last android appcompat android-appcompat

android - last - Mostrar icono en la barra de acción/barra de herramientas con AppCompat-v7 21



com.android.support:design 26 (15)

En las UI de Android modernas, los desarrolladores deberían apoyarse más en un esquema de color visualmente distinto para las barras de herramientas que en el icono de su aplicación. Se desaconseja el uso del ícono de la aplicación más el título como diseño estándar en los dispositivos API 21 y posteriores.

Si no está de acuerdo, puede probar con:

Para crear la barra de herramientas en XML:

<android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" />

En tu actividad:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_layout); Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolbar); }

Use el método setLogo() para configurar el icono. Código fuente.

Intenté esto, pero aún no veo el ícono como antes:

getSupportActionBar().setLogo(R.drawable.ic_launcher); getSupportActionBar().setDisplayUseLogoEnabled(true); getSupportActionBar().setIcon(R.drawable.ic_launcher);

Parece que funciona cuando uso la barra de herramientas personalizada, pero eso me obligaría a tocar todos los diseños, ¿hay una mejor manera de hacerlo?


En Kotlin hice lo siguiente para mostrar el ícono:

supportActionBar?.setDisplayShowHomeEnabled(true) supportActionBar?.setIcon(R.drawable.ic_icon_small)


En Xamarin.Android puedes usar estos:

SupportActionBar.SetHomeButtonEnabled(true); SupportActionBar.SetDisplayShowHomeEnabled(true); SupportActionBar.SetDisplayUseLogoEnabled(true); SupportActionBar.SetIcon(Resource.Drawable.ic_launcher); SupportActionBar.SetDisplayShowTitleEnabled(false);

Se requiere el uso de Android.Support.V7.App.AppCompatActivity.


Esto funcionó para mí:

getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayUseLogoEnabled(true); getSupportActionBar().setLogo(R.drawable.ic_logo); getSupportActionBar().setDisplayShowTitleEnabled(false); //optional

tanto como:

getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setIcon(R.drawable.ic_logo); //also displays wide logo getSupportActionBar().setDisplayShowTitleEnabled(false); //optional


Intenta usar:

ActionBar ab = getSupportActionBar(); ab.setHomeButtonEnabled(true); ab.setDisplayUseLogoEnabled(true); ab.setLogo(R.drawable.ic_launcher);


Para la barra de acciones:

getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);

Para barra de herramientas:

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);


Prueba esto. Para mi funciono

getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayUseLogoEnabled(true);


Prueba esto:

import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; ... ActionBar actionbar = getSupportActionBar(); actionbar.setDisplayHomeAsUpEnabled(true); actionbar.setHomeAsUpIndicator(R.drawable.ic_launcher); so your icon will be used for Home / back or import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; ... ActionBar actionbar = getSupportActionBar(); actionbar.setDisplayShowHomeEnabled(true); actionbar.setIcon(R.drawable.ic_launcher);

para icono estático


Si no desea establecer su barra de herramientas como barra de acción usando setSupportActionBar , puede agregar un logotipo junto al icono de navegación (si tiene un botón de retroceso, por ejemplo) como este:

toolbar.setLogo();

o en xml

<android.support.v7.widget.Toolbar .... android:logo="@drawable/logo" app:logo="@drawable/logo"/>

E incluso si tiene un título establecido en la barra de herramientas, el título aún se mostrará.

Ej: El cheque verde en la imagen de abajo es el logo


Una mejor manera de configurar múltiples opciones:

setIcon/setLogo método setIcon/setLogo solo funcionará si ha configurado DisplayOptions. Intente esto:

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE); actionBar.setIcon(R.drawable.ic_launcher);

También puede establecer opciones para mostrar LOGO (simplemente agregue ActionBar.DISPLAY_USE_LOGO constante). Más información - displayOptions


cosa más simple de hacer; solo agrega:

app:navigationIcon="@drawable/ic_action_navigation_menu">

a la etiqueta <android.support.v7.widget.Toolbar

donde @drawable/ic_action_navigation_menu es el nombre del icono


si desea configurar el icono de inicio o de regreso (no el logotipo o el icono estático) para que pueda usar

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );


getSupportActionBar().setDisplayShowHomeEnabled(true);

junto con

getSupportActionBar().setIcon(R.drawable.ic_launcher);


getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setIcon(R.drawable.ic_launcher);

O haga un diseño XML llame a tool_bar.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" android:background="@color/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark" android:elevation="4dp"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:src="@drawable/ic_action_search"/> </RelativeLayout> </android.support.v7.widget.Toolbar>

Ahora en tu actividad principal agrega esta línea

<include android:id="@+id/tool_bar" layout="@layout/tool_bar" />


toolbar.setLogo(resize(logo, (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._120sdp) + ""), (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._35sdp) + ""))); public Drawable resize(Drawable image, int width, int height) { Bitmap b = ((BitmapDrawable) image).getBitmap(); Bitmap bitmapResized = Bitmap.createScaledBitmap(b, width, height, false); return new BitmapDrawable(getResources(), bitmapResized); }