MISE À JOUR DU 8 mai 2018
Vous pouvez utiliser
app:labelVisibilityMode="labeled"
directement dans<android.support.design.widget.BottomNavigationView />
Source: https://developer.android.com/reference/com/google/android/material/bottomnavigation/LabelVisibilityMode
Vous n'avez pas besoin de cette solution longue.
RÉPONSE PRÉCÉDENTE
J'ai eu un comportement étrange avec BottomNavigationView. Lorsque je sélectionnais un élément / fragment qu'il contient, le fragment pousse BottomNavigationView un peu plus bas, de sorte que le texte de BottomNavigationView passe sous l'écran, de sorte que seules les icônes étaient visibles et le texte est masqué en cliquant sur n'importe quel élément.
Si vous êtes confronté à ce comportement étrange, voici la solution. Retirez simplement
android:fitsSystemWindows="true"
dans votre disposition racine de fragment. Retirez simplement ceci et boum! BottomNavigationView fonctionnera bien, maintenant il peut être affiché avec du texte et une icône. J'avais ceci dans ma racine CoordinatorLayout de fragment.
N'oubliez pas non plus d'ajouter
BottomNavigationViewHelper.removeShiftMode(bottomNavigationView);
dans votre activité pour désactiver le mode de changement de vitesse.
Voici cette classe:
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");
}
}
}