Cómo deshabilitar BottomNavigationView modo de cambio?

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 sólo se muestra el título del elemento al que se hace clic.

Introduzca aquí la descripción de la imagen

La implementación de BottomNavigationView tiene condición: cuando hay más de 3 elementos, utilice el modo de cambio.

En este momento no se puede cambiar a través de la API existente y la única manera de desactivar el modo de cambio es utilizar la reflexión.

Necesitará una clase de ayuda:

 import android.support.design.internal.BottomNavigationItemView; import android.support.design.internal.BottomNavigationMenuView; import android.support.design.widget.BottomNavigationView; import android.util.Log; import java.lang.reflect.Field; public class BottomNavigationViewHelper { public static void disableShiftMode(BottomNavigationView view) { BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0); try { Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode"); shiftingMode.setAccessible(true); shiftingMode.setBoolean(menuView, false); shiftingMode.setAccessible(false); for (int i = 0; i < menuView.getChildCount(); i++) { BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i); //noinspection RestrictedApi item.setShiftingMode(false); // set once again checked value, so view will be updated //noinspection RestrictedApi item.setChecked(item.getItemData().isChecked()); } } catch (NoSuchFieldException e) { Log.e("BNVHelper", "Unable to get shift mode field", e); } catch (IllegalAccessException e) { Log.e("BNVHelper", "Unable to change value of shift mode", e); } } } 

Y luego aplicar el método disableShiftMode en su BottomNavigationView , pero recuerde si está inflando la vista de menú de su código, tiene que ejecutarlo después de inflar.

Ejemplo de uso:

 BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_bar); BottomNavigationViewHelper.disableShiftMode(bottomNavigationView); 

PD.

Recuerde, tendrá que ejecutar este método cada vez que cambie los elementos del menú en su BottomNavigationView .

ACTUALIZAR

También necesita actualizar el archivo de configuración proguard (por ejemplo proguard-rules.pro), el código anterior usa la reflexión y no funcionará si proguard ofuscar el campo mShiftingMode .

 -keepclassmembers class android.support.design.internal.BottomNavigationMenuView { boolean mShiftingMode; } 

Gracias Muhammad Alfaifi por señalar este problema y proporcionar un fragmento .

Para deshabilitar la animación de texto, también puedes usarla en tu archivo dimens.xml:

 <dimen name="design_bottom_navigation_active_text_size">12sp</dimen> 
  • Quitar el modo de animación / desplazamiento de BottomNavigationView android
  • Cómo eliminar la animación de iconos para la vista de navegación inferior en android
  • Recyclerview cubierto por BottomNavigationView
  • Cómo ocultar el BottomNavigationView debajo del teclado con el conjunto adjustResize
  • Android BottomNavigationView elementos mostrando sin texto también el diseño no se esconde en desplazamiento
  • Establecer el ítem / id de elementos inicialmente seleccionado en BottomNavigationView
  • BottomNavigationView muestra los iconos y las etiquetas de texto en todo momento
  • Cambiar el tamaño del icono de BottomNavigationView
  • Restauración del estado del fragmento al cambiar fragmentos a través de la barra de navegación inferior
  • BottomNavigationView - Sombra y efecto de ondulación
  • Navegación inferior Ver resaltar elemento seleccionado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.