Cómo utilizar setItemIconTintList con un elemento específico? [BottomNavigationView]
Estoy tratando de mostrar la foto del usuario en BottomNavigationView
pero no sé cómo hacerlo correctamente.
Esta solución funciona bien pero los otros elementos perderán sus colores.
Drawable drawable = activityMainBinding.activityMainBottomNavigationViewBottomNavigation.getMenu().findItem(R.id.menu_bottom_navigation_user).getIcon();
activityMainBinding.activityMainBottomNavigationViewBottomNavigation.setItemIconTintList(null);
He intentado resolver el problema aplicando el método setItemIconTintList solo en el ítem de usuario.
Drawable drawable = activityMainBinding.activityMainBottomNavigationViewBottomNavigation.getMenu().findItem(R.id.menu_bottom_navigation_user).getIcon();
drawable.setState(null);
drawable.setTintList(null);
drawable.clearColorFilter();
activityMainBinding.activityMainBottomNavigationViewBottomNavigation.getMenu().findItem(R.id.menu_bottom_navigation_user).setIcon(drawable);
¿Cómo puedo resolver el problema?
Espero que alguien muestre las imágenes adjuntas directamente porque no puedo hacerlo.
davy.ai
Una posible solución es crear una clase personalizada
BottomNavigationView
y sobrescribir el métodoonDraw()
para dibujar manualmente la foto del usuario encima del icono del elemento seleccionado. De esta manera, puedes mantener los colores originales de los demás elementos y solo modificar el elemento del usuario.Aquí tienes un ejemplo de implementación:
Para utilizar esta clase personalizada en tu
MainActivity
, debes reemplazar elBottomNavigationView
en tu diseño conCustomBottomNavigationView
y establecer la foto del usuario utilizando el métodosetUserPhoto()
:Ten en cuenta que debes ajustar el tamaño y la posición de la foto y el borde del círculo según tus requisitos de diseño.