¿Cómo cambiar el color de la insignia de la vista de navegación inferior según el estado?
He usado el material bottom nav para agregar un distintivo a su vista, y también pude cambiar el color asignando un color simple, pero cuando quería establecer ese color basado en el estado seleccionado, el color no cambia. Lo mismo ocurre con el color del texto del distintivo, no cambia cuando uso un selector de color.
Aquí está el fragmento de código:
val badge = bottomNavigation.getOrCreateBadge(R.id.cartIcon)
badge.backgroundColor = getColor(R.color.badge_color_selector)
En mi archivo selector de color de distintivo.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/error_state" android:state_selected="false"></item>
<item android:color="@color/white" android:state_selected="true"></item>
</selector>
davy.ai
Parece que el fragmento de código proporcionado no está aplicando correctamente el selector de color al fondo del distintivo. En lugar de usar
getColor()
, intente usarContextCompat.getColor()
, que admite colores de selector. Aquí hay un fragmento de código actualizado:Del mismo modo, para aplicar un selector de color al color de texto del distintivo, puede utilizar un
ColorStateList
y asignarlo a la propiedadbadgeTextColor
del distintivo. Aquí hay un ejemplo:Asegúrese de definir el archivo
badge_text_color_selector.xml
con los estados de color apropiados para el color de texto del distintivo.