ACTUALIZACIÓN DEL 8 DE MAYO DE 2018
Puedes usar
app:labelVisibilityMode="labeled"
directamente en<android.support.design.widget.BottomNavigationView />
Fuente: https://developer.android.com/reference/com/google/android/material/bottomnavigation/LabelVisibilityMode
No necesito esto debajo de una solución larga.
RESPUESTA ANTERIOR
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
android:fitsSystemWindows="true"
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
BottomNavigationViewHelper.removeShiftMode(bottomNavigationView);
en su actividad para desactivar el modo de cambio.
Aquí está esa clase:
public class BottomNavigationViewHelper {
@SuppressLint("RestrictedApi")
public static void removeShiftMode(BottomNavigationView view) {
//this will remove shift mode for bottom navigation 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);
item.setShiftingMode(false);
// set once again checked value, so view will be updated
item.setChecked(item.getItemData().isChecked());
}
} catch (NoSuchFieldException e) {
Log.e("ERROR NO SUCH FIELD", "Unable to get shift mode field");
} catch (IllegalAccessException e) {
Log.e("ERROR ILLEGAL ALG", "Unable to change value of shift mode");
}
}
}