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