J'ai implémenté la vue de navigation inférieure depuis la bibliothèque de support de conception 25 dans mon projet. J'ai 5 icônes dans la vue. chaque fois qu'une icône est sélectionnée, elle est animée. Mais lorsque 3 icônes ou moins n’affiche aucune animation. Je veux supprimer cette animation et n'ai besoin que d'un changement de couleur pour l'icône. Comment puis-je atteindre cet objectif? Fait assez de googler, mais n'a pas pu trouver la solution. S'il vous plaît aider. Merci.
a obtenu la réponse de ce thread .
Pour supprimer l'animation ou le mode shift.
L'implémentation de BottomNavigationView
est conditionnée: lorsqu'il y a plus de 3 éléments, utilisez le mode shift.
Créer une classe d'assistance
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);
}
}
}
Usage
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_bar);
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
BottomNavigationViewEx est une bonne extension de BottomNavigationView . EnableShiftingMode (false) fait le travail à votre place.
J'ai essayé cela et ça a bien fonctionné
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
Ou ce code mainactivity.xml
app:labelVisibilityMode="unlabeled"
Essayez c'est la mise en page
app:labelVisibilityMode="labeled"
ou au niveau du code mNavigationView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);
Et mettez à jour votre bibliothèque de support de conception à 28.0. +
Ce n'est peut-être pas la solution la plus élégante ou la plus pratique, mais vous pouvez essayer d'ajouter la ligne suivante à votre BottomNavigationView.
app:labelVisibilityMode="unlabeled"
Cela supprimera l'étiquette et désactivera également l'animation.
Pour supprimer une animation ou un déplacement par déplacement, créez une classe bottomNavigationViewHelper à l'aide de bottomNavigationViewEX
package com.example.chitchat.utils;
import Android.util.Log;
import com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx;
public class BottomNavigationViewHelper {
private static final String TAG = "bottomNavigationViewHel";
public static void setupBottomnavigationView(BottomNavigationViewEx bottomNavigationViewEx)
{
Log.d(TAG, "setupBottomnavigationView: setting up bottom navigation view");
bottomNavigationViewEx.enableAnimation(false);
bottomNavigationViewEx.enableShiftingMode(false);
bottomNavigationViewEx.enableItemShiftingMode(false);
bottomNavigationViewEx.setTextVisibility(false);
}
}