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):
- Agregar barra de herramientas a la actividad causa NoClassDefFoundError
- La altura de la barra de herramientas en Lollipop es demasiado grande
- ¿Es posible que la barra de estado se desplace junto con la barra de herramientas con el diseño del coordinador en Android?
- Barra de herramientas dentro de CollapsingToolbarLayout, Título de la barra de herramientas que no se muestra
- Cómo cambiar el tema de la barra de herramientas de AppCompat v21 mediante programación?
<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);
- "Botón Atrás" mediante la barra de herramientas getSupportActionbar y appcompat v7
- ¿Cómo contraer el AppBarLayout animado sin empujar el contenido, similar a WhatsApp Android?
- Efecto de desplazamiento de Android (aplicación Google I / O)
- Errores después de construir apk
- Cómo hacer que el título de la barra de herramientas haga clic exactamente como en ActionBar, sin establecerlo como ActionBar?
- ¿Cómo crear la barra de herramientas con el botón personalizado a la izquierda?
- Cómo hacer que el estado y la barra de herramientas sean transparentes en Nexus
- Barra de herramientas con ProgressBar horizontal debajo
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
- Lanzar aplicación de facebook desde otra aplicación
- Android SQLite issue – table … no tiene una columna llamada