Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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

  • (Diseño de la Biblioteca de Soporte) CollapsingToolbarLayout - Barra de herramientas no se queda en el colapso
  • Errores después de construir apk
  • Barra de herramientas desplazándose bajo la barra de estado
  • ¿Es posible que la barra de estado se desplace junto con la barra de herramientas con el diseño del coordinador en Android?
  • Agregar barra de herramientas a la actividad causa NoClassDefFoundError
  • Viendo el mensaje en los registros: "app: theme is deprecated"?
  • Icono ActionBarDrawerToggle que falta cuando se utiliza AppCompat v22
  • Barra de herramientas dentro de CollapsingToolbarLayout, Título de la barra de herramientas que no se muestra
  • 6 Solutions collect form web for “Cómo cambiar el indicador HomeAsUp en la nueva barra de herramientas de AppCompat?”

    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

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.