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

  • Barra de herramientas ActionMode fondo pre Lollipop no funciona
  • Barra de acción transparente y barra de estado como Uber
  • Cómo animar el icono del menú de desbordamiento de la barra de herramientas
  • ¿Cómo se eliminan los elementos de menú predeterminados de la barra de herramientas y se reemplazan con iconos diferentes?
  • Cómo hacer que el título de la barra de herramientas haga clic exactamente como en ActionBar, sin establecerlo como ActionBar?
  • ¿Es posible que la barra de estado se desplace junto con la barra de herramientas con el diseño del coordinador en Android?
  • Android Volver Flecha en la barra de herramientas (AppCompatActivity)
  • Cómo configurar el fondo de la barra de herramientas de contracción con el comportamiento personalizado para adaptarse a toda la pantalla
  • Cómo ocultar la barra de herramientas después de colapsar mientras que recyclerView desplazamiento hacia abajo
  • Android: obtener recursos $ NotFoundException para abc_ic_ab_back_material
  • Icono ActionBarDrawerToggle que falta cuando se utiliza AppCompat v22
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.