es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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>
Tags:  , ,

Answer

  1. Avatar for 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 usar ContextCompat.getColor(), que admite colores de selector. Aquí hay un fragmento de código actualizado:

    val badge = bottomNavigation.getOrCreateBadge(R.id.cartIcon)
    badge.backgroundColor = ContextCompat.getColor(this, R.color.badge_color_selector)
    

    Del mismo modo, para aplicar un selector de color al color de texto del distintivo, puede utilizar un ColorStateList y asignarlo a la propiedad badgeTextColor del distintivo. Aquí hay un ejemplo:

    val badgeTextColor = ContextCompat.getColorStateList(this, R.color.badge_text_color_selector)
    badge.badgeTextColor = badgeTextColor
    

    Asegúrese de definir el archivo badge_text_color_selector.xml con los estados de color apropiados para el color de texto del distintivo.

Comments are closed.