He actualizado mi SDK a API 21 y ahora el ícono de retroceder / subir es una flecha negra que apunta a la izquierda.
Me gustaría que fuera gris. ¿Cómo puedo hacer eso?
En Play Store, por ejemplo, la flecha es blanca.
He hecho esto para configurar algunos estilos. He usado @drawable/abc_ic_ab_back_mtrl_am_alpha
para homeAsUpIndicator
. Ese dibujo es transparente (solo alfa) pero la flecha se muestra en negro. Me pregunto si puedo configurar el color como lo hago en el DrawerArrowStyle
. O si la única solución es crear mi @drawable/grey_arrow
y usarlo para homeAsUpIndicator
.
<!-- Base application theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
<item name="android:homeAsUpIndicator" tools:ignore="NewApi">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
</style>
<!-- ActionBar style -->
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:background">@color/actionbar_background</item>
<!-- Support library compatibility -->
<item name="background">@color/actionbar_background</item>
</style>
<!-- Style for the navigation drawer icon -->
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">@color/actionbar_text</item>
</style>
Mi solución hasta ahora ha sido tomar el @drawable/abc_ic_ab_back_mtrl_am_alpha
, que parece ser blanco, y pintarlo del color que deseo usando un editor de fotos. Funciona, aunque preferiría usar @color/actionbar_text
like in DrawerArrowStyle
.
fuente
homeAsUpIndicator
/@drawable/abc_ic_ab_back_mtrl_am_alpha
para hacer que la flecha hacia atrás sea blanca. Prefiero esto que piratear Java.Respuestas:
Puedes lograrlo a través del código. Obtenga la flecha de retroceso dibujable, modifique su color con un filtro y configúrelo como botón de retroceso.
Revisión 1:
A partir de API 23 (Marshmallow), el recurso extraíble
abc_ic_ab_back_mtrl_am_alpha
se cambia aabc_ic_ab_back_material
.EDITAR:
Puede usar este código para lograr los resultados que desea:
fuente
ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mtrl_am_alpha)
porquegetResources.getDrawable(int)
está en desusoMirando la fuente
Toolbar
yTintManager
,drawable/abc_ic_ab_back_mtrl_am_alpha
está teñida con el valor del atributo de estilocolorControlNormal
.Intenté configurar esto en mi proyecto (con
<item name="colorControlNormal">@color/my_awesome_color</item>
mi tema), pero todavía es negro para mí.Actualización :
Lo encontré. Debe establecer el
actionBarTheme
atributo ( noactionBarStyle
) concolorControlNormal
.P.ej:
fuente
colorControlNormal
el tema raíz en lugar de en el temaactionBarTheme
.Intenté todas las sugerencias anteriores. La única forma en que logré cambiar el color de la flecha predeterminada del botón Atrás del icono de navegación en mi barra de herramientas es establecer colorControlNormal en el tema base como este. Probablemente debido al hecho de que el padre está usando Theme.AppCompat.Light.NoActionBar
fuente
style.xml
colorControlNormal
está no el prefijoandroid:
.Necesita agregar un solo atributo al tema de su barra de herramientas:
Aplique este toolbar_theme a su barra de herramientas.
O
puedes aplicar directamente a tu tema -
fuente
Solo agrega
a su tema de aplicación actual.
fuente
si lo usa
Toolbar
, puede probar estofuente
Como se dijo en la mayoría de los comentarios anteriores, la solución es agregar
<item name="colorControlNormal">@color/white</item>
al tema de tu aplicación. Pero confirme que no tiene otro tema definido en su elemento Barra de herramientas en su diseño.fuente
La respuesta de Carles es la respuesta correcta, pero pocos de los métodos como getDrawable (), getColor () quedaron en desuso en el momento en que escribo esta respuesta . Entonces la respuesta actualizada sería
Siguiendo algunas otras consultas de stackoverflow, descubrí que llamar a ContextCompat.getDrawable () es similar a
Y ContextCompat.getColor () es similar a
Enlace 1: ContextCompat.getDrawable ()
Enlace 2: ContextCompat.getColor ()
fuente
abc_ic_ab_back_material
, en lugar deabc_ic_ab_back_mtrl_am_alpha
.Encontré una solución que funciona antes de Lollipop. Establezca "colorControlNormal" dentro de "actionBarWidgetTheme" para cambiar el color de homeAsUpIndicator. Modificando la respuesta de rockgecko desde arriba para que se vea así:
fuente
En compileSdkVersoin 25, puede hacer esto:
styles.xml
fuente
Utilice el siguiente método:
Ahora puedes configurar el dibujable con:
fuente
Cambiar el color del icono de navegación del menú
En style.xml:
fuente
Otra solución que podría funcionar para usted es no declarar su barra de herramientas como la barra de acción de la aplicación (por
setActionBar
osetSupportActionBar
) y establecer el icono de atrás en su onActivityCreated usando el código mencionado en otra respuesta en esta páginaAhora, no recibirá la
onOptionItemSelected
devolución de llamada cuando presione el botón Atrás. Sin embargo, puedes registrarte para eso usandosetNavigationOnClickListener
. Esto es lo que hago:No estoy seguro de si funcionará si trabajas con elementos de menú.
fuente
Nos encontramos con el mismo problema y todo lo que queríamos era establecer el
aplicación: collapseIcon
atributo en la barra de herramientas al final, que no encontramos ya que no está muy bien documentado :)
fuente
prueba esto
Llamada de función:
fuente
Esto es lo que funcionó para mí:
Agregue los siguientes atributos a su tema.
Para cambiar la barra de herramientas / barra de acción flecha hacia atrás arriba de la API 21
Para cambiar la barra de herramientas / barra de acción flecha hacia atrás debajo de la API 21
Para cambiar el modo de acción flecha hacia atrás
Para eliminar la barra de herramientas / barra de acciones sombra
Para cambiar el desbordamiento de la barra de acción dibujable
Nota: 'srcCompat' se usa en lugar de 'android: src' debido a la compatibilidad de dibujo vectorial para la API por debajo de 21
fuente
La solución es muy simple.
Simplemente ponga la siguiente línea en su estilo llamado AppTheme
Ahora todo su código xml se verá como se muestra a continuación (estilo predeterminado).
fuente
Acabo de cambiar el tema de la barra de herramientas para que sea @ style / ThemeOverlay.AppCompat.Light
y la flecha se volvió gris oscuro
fuente
Así es como lo hice en Componentes de material:
fuente
Puede cambiar el color del icono de navegación mediante programación de esta manera:
fuente
Simplemente elimine
android:homeAsUpIndicator
yhomeAsUpIndicator
de su tema y estará bien. Elcolor
atributo en tuDrawerArrowStyle
estilo debe ser suficiente.fuente
color
atributo). La flecha del cajón es un poco más grande.A menos que haya una mejor solución ...
Lo que hice fue tomar las
@drawable/abc_ic_ab_back_mtrl_am_alpha
imágenes, que parecen ser blancas, y pintarlas en el color que deseo usando un editor de fotos.fuente