Cómo cambiar el indicador HomeAsUp en la nueva barra de herramientas de AppCompat?

Quiero cambiar el indicador por defecto de ActionBar homeAsUp (dibujable) en mi barra de herramientas de AppCompat. ¿Cómo lograrlo? Sólo aparece la flecha predeterminada.

Estilos (iguales para el nivel de la otra API):

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- API 14 theme customizations can go here. --> <item name="android:windowActionBarOverlay">true</item> <item name="android:homeAsUpIndicator">@drawable/home</item> <!-- Support library compatibility --> <item name="windowActionBarOverlay">true</item> <item name="homeAsUpIndicator">@drawable/home</item> </style> 

Barra de herramientas en el diseño de mi fragmento:

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/transparent" android:homeAsUpIndicator="@drawable/home" android:minHeight="?attr/actionBarSize" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/AppTheme" /> 

En Fragmento:

 toolbar = (Toolbar) rootView.findViewById(R.id.my_awesome_toolbar); activity.setSupportActionBar(toolbar); ActionBar actionBar = activity.getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayShowTitleEnabled(false); 

Para cambiar el icono, simplemente llame en tiempo de ejecución:

 toolbar.setNavigationIcon(R.drawable.home); 

Truco con estilos / temas que no funcionan.

Cómo habilitar homeAsUp o llamar a setDisplayHomeAsUpEnabled () en la barra de herramientas independiente con appcompat v21

He intentado setHomeAsUpIndicator(int resId) , funciona.

 private void initToolbar ( Toolbar mToolbar ) { mToolbar.setTitleTextColor ( getResources ().getColor ( R.color.main_title ) ); setSupportActionBar ( mToolbar ); ActionBar actionbar = getSupportActionBar (); actionbar.setDisplayHomeAsUpEnabled ( true ); actionbar.setHomeAsUpIndicator ( R.drawable.ic_action_back ); } 

Pero mToolbar.setNavigationIcon(R.drawable.ic_action_back) no funciona 🙁

Si android.support.v7.app.ActionBarDrawerToggle utilizado junto con DrawerLayout y Toolbar puede cambiar el icono de homeAsUp con el siguiente código:

 //set home as up indicator mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_up_indicator); //remove home as up indicator mDrawerToggle.setHomeAsUpIndicator(null); 

Para mostrar el indicador de homeAsUpIndicator en lugar del indicador de inicio haga lo siguiente:

 mDrawerToggle.setDrawerIndicatorEnabled(false); 

Docs:

ActionBarDrawerToggle # setHomeAsUpIndicator ActionBarDrawerToggle # setDrawerIndicatorEnabled

Simplemente agregue esta línea a sus estilos.xml

  <item name="navigationIcon">@drawable/ic_back_arrow</item> 

Desafortunadamente, si esta línea de estilo se usa en una barra de herramientas / App AppCompat comúnmente compartida con otras actividades de la aplicación, incluida la actividad principal, se mostrará automáticamente el " navigationIcon ", a diferencia del predeterminado HomeAsUpIndicator , que no se muestra a menos que Explícitamente habilitado como se desee en una Actividad, típicamente como sigue: (en el onCreate () )

 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Con la línea de estilo anterior, ya que se comporta de manera opuesta, de manera similar, el indicador debe estar explícitamente deshabilitado si no se desea mostrar, como en la actividad principal, de la siguiente manera: (en el onCreate () )

 getSupportActionBar().setDisplayHomeAsUpEnabled(false); 

(Como se observa en los teléfonos Android 4.0.4, 4.3 y 4.4.2)

Acabo de enterarme de que realmente funciona toolbar.setNavigationIcon (R.drawable.ic_action_back) y aquí está el código para que funcione.

  @Override protected void onCreate(Bundle savedInstanceState) { ..... Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.ic_action_back); 

Publique el siguiente código en onOptionsItemSelected (elemento MenuItem)

 @Override public boolean onOptionsItemSelected(MenuItem item) { ...... if (id == android.R.id.home) { startActivity(new Intent(this, MainActivity.class)); return true; } return super.onOptionsItemSelected(item); } 

Nota La actividad principal en este código es la actividad actual a la que deseo que acceda mi botón de regreso o de inicio. espero que esto ayude

  • Mostrar la vista cuando la barra de herramientas se derrumba
  • Barra de herramientas no se contraerá con Scrollview como hijo de CoordinatorLayout
  • ¿Cómo agregar divisores entre elementos de menú específicos?
  • Android Volver Flecha en la barra de herramientas (AppCompatActivity)
  • Eliminar título en la barra de herramientas en appcompat-v7
  • Android: el texto de la barra de herramientas aparece como negro en vez de blanco
  • ¿Cómo cambiar el texto del título y el color de los botones SIN cambiar el color del menú de desbordamiento de acción en la nueva barra de herramientas?
  • Icono ActionBarDrawerToggle que falta cuando se utiliza AppCompat v22
  • Viendo el mensaje en los registros: "app: theme is deprecated"?
  • Barra de herramientas desplazándose bajo la barra de estado
  • Barra de acción transparente y barra de estado como Uber
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.