BottomNavigationView no muestra el título del menú que está inactivo.
¿Cómo mostrar los títulos de todos los elementos del menú en bottomNavigationBar? El problema es que en mi caso solo se muestra el título del elemento en el que se hace clic.
android
android-support-design
bottomnavigationview
Natan Rubinstein
fuente
fuente
Respuestas:
La implementación de
BottomNavigationView
tiene condición: cuando hay más de 3 elementos, utilice el modo de turno.En este momento no puede cambiarlo a través de la API existente y la única forma de deshabilitar el modo de cambio es usar la reflexión.
Necesitarás clase auxiliar:
Y luego aplique el
disableShiftMode
método en suBottomNavigationView
, pero recuerde que si está inflando la vista del menú desde su código, debe ejecutarlo después de inflarlo.Ejemplo de uso:
PD.
Recuerde, deberá ejecutar este método cada vez que cambie los elementos del menú en su
BottomNavigationView
.ACTUALIZAR
También debe actualizar el archivo de configuración de proguard (por ejemplo, proguard-rules.pro), el código anterior usa la reflexión y no funcionará si proguard ofusca el
mShiftingMode
campo.Gracias Muhammad Alfaifi por señalar este problema y proporcionar un fragmento .
ACTUALIZACIÓN 2
Como Jolanda Verhoef señaló que la nueva biblioteca de Soporte (
28.0.0-alpha1
) y también la nueva biblioteca de Componentes de Material (1.0.0-beta01
) ofrece una propiedad pública que puede usarse para manipular el modo de cambio en 3 elementos de menú.En la biblioteca de Componentes de material también se aplica si hay 5 elementos de menú.
ACTUALIZACIÓN 3
Como también señaló @ThomasSunderland, puede establecer esta propiedad en falso
app:itemHorizontalTranslation="false"
sinEnabled
postfix para deshabilitar la animación de desplazamiento.Puede consultar la guía completa para diseñar el BottomNavigation aquí
fuente
Desde la biblioteca de soporte 28.0.0-alpha1:
fuente
app:
noandroid:
Para deshabilitar la animación de texto, también puede usar esto en su archivo dimens.xml:
Es posible que también deba agregar esto en su manifiesto:
fuente
tools:override="true"
<dimen name="design_bottom_navigation_active_text_size" tools:ignore="PrivateResource">12sp</dimen>
Ahora puede usar
app:labelVisibilityMode="[labeled, unlabeled, selected, auto]"
en28-alpha
labeled
mantendrá todas las etiquetas visibles.unlabeled
solo mostrará iconos.selected
solo mostrará la etiqueta del elemento seleccionado y los elementos de turno.auto
elegirá etiquetado o seleccionado según la cantidad de elementos que tenga. etiquetado para 1-3 artículos y seleccionado para 3+ artículos.fuente
La respuesta de Przemysław en Kotlin como una función de extensión
Uso (con extensiones de Android Kotlin):
fuente
Funciona para mi
o
fuente
Para deshabilitar la animación de texto y disminuir el tamaño de fuente, use esto en su archivo dimens.xml:
fuente
Navigate
->File...
>design_bottom_navigation_item.xml
para ver que no hay otra manera.ACTUALIZAR
en Android SDK versión 28 y superior, han cambiado
item.setShiftingMode(false)
aitem.setShifting(false)
También quitaron el campo.
mShiftingMode
Entonces el uso será
fuente
Como otros han señalado, desde la biblioteca de soporte 28.0.0-alpha1 es posible:
o puedes configurarlo programáticamente .
Nota: si está actualizando desde una versión anterior de la biblioteca de soporte, no olvide aumentar la versión de compilación SDK. Verifique las versiones de libraray de soporte aquí: versiones de la biblioteca de soporte
Sin embargo, aún puede recibir el mensaje labelVisibilityMode no encontrado al compilar, si su aplicación depende de versiones anteriores de la biblioteca de soporte de diseño. Si este es el caso, intente actualizar a una versión de la dependencia dada, que depende de al menos la versión 28.0.0-alpha1 de la biblioteca de soporte de diseño. Si eso no es posible, defina la dependencia explícitamente.
Si usas Gradle
Para agregar una dependencia de soporte de diseño explícitamente en su build.gradle :
implementación 'com.android.support:design:28.0.0'
fuente
Para respuesta actualizada utilizando el valor predeterminado. Actualización a la última biblioteca de diseño
y poner a sus atributos xml BottomNavigationView
puedes ponerlo también como programáticamente
Puede encontrar la fuente aquí BottomNavigationView
Espero que esto te ayude.
fuente
app:labelVisibilityMode
?A su
BottomNavigationView
complementoapp:labelVisibilityMode="unlabeled"
lo que resulta en lo siguiente
fuente
Es muy simple, solo agregue una propiedad en BottomNaviationView
fuente
Tuve un comportamiento extraño con BottomNavigationView. Cuando estaba seleccionando cualquier elemento / fragmento en él, el fragmento empuja BottomNavigationView un poco más abajo, por lo que el texto de BottomNavigationView va debajo de la pantalla, por lo que solo los iconos estaban visibles y el texto se oculta al hacer clic en cualquier elemento.
Si se enfrenta a ese comportamiento extraño, entonces esta es la solución. Solo eliminar
en su diseño raíz de fragmento. Solo elimina esto y ¡boom! BottomNavigationView funcionará bien, ahora se puede mostrar con texto e ícono. Tenía esto en mi raíz CoordinatorLayout of fragment.
Tampoco olvides agregar
en su actividad para desactivar el modo de cambio. Aunque no está exactamente relacionado con la pregunta formulada, aún así encuentro esto útil.
fuente
Esta es una biblioteca de terceros que uso y tiene muchas opciones de personalización, como deshabilitar el modo de cambio, mostrar solo íconos, configurar el tamaño de los íconos, etc. BottomNavigationViewEx
fuente
Para eliminar completamente las animaciones:
Si también desea deshacerse de esa pequeña y molesta animación de margen superior, necesita más código de reflexión. Aquí está la solución completa que elimina cualquier animación:
Y asegúrese de agregar eso a su archivo de configuración de protección:
fuente
Actualice su biblioteca de soporte a 28.0.0.
fuente
Si usa support: design: 28.0.0 agregue esta aplicación de línea: labelVisibilityMode = "sin etiqueta" a su BottomNavigationView
fuente
solo quiero agregar eso por encima de este método disableShiftMode agregar el código a continuación también. @SuppressLint ("RestrictedApi")
fuente
https://android.jlelse.eu/disable-shift-label-animation-from-bottom-navigation-android-b42a25dcbffc
1
2
3
fuente
Puede usar esto para mostrar texto e íconos en BottomNevigationView para 3 a 5 elementos y detener el cambio.
Pero enfrentará un problema de corte de texto largo en BottmNevigationView para 5 elementos. para eso, encontré una buena solución para detener el desplazamiento de texto, así como los íconos de BottomNevigationView. También puede detener el desplazamiento de texto, así como los iconos en BottomNevigationView también. Aquí se proporcionan instantáneas de código.
1. Agregue esto alguna línea de código en BottomNevigationView como se muestra
2. Agregue elementos de menú de la siguiente manera: -
3.Agregue este estilo en el archivo style.xml:
4) Agregar estos en la carpeta Dimen
Obtuve ayuda de estos enlaces y enlaces . También puedes obtener ayuda estudiando estos enlaces. Esto me ayuda mucho. Espero que esto también te ayude. Gracias....
fuente