Comment supprimer l'animation d'icône pour la vue de navigation en bas dans android

j'ai mis en œuvre la vue de Navigation du bas de la bibliothèque de soutien 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 quand 3 icônes ou moins ne montre aucune animation. Je veux supprimer cette animation et n'ai besoin que d'un changement de couleur pour l'icône. Comment puis-je y parvenir? J'ai fait assez de recherches sur Google, mais je n'ai pas trouvé la solution. S'il vous plaît aider. Grâce.

16
demandé sur Nabeel K 2017-01-14 14:34:06

3 réponses

obtenu de réponse à partir de ce thread.

pour supprimer l'animation ou le mode shift.

mise en oeuvre de BottomNavigationView a la condition: quand il y a plus de 3 articles, utilisez le mode shift.

Créer une classe helper

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);
        } 
    } 
} 

Utilisation

BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_bar);
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
80
répondu Nabeel K 2017-05-23 12:10:31

BottomNavigationViewEx est une bonne extension de BottomNavigationView standard. enableShiftingMode (false) fait le travail pour vous.

6
répondu Pei 2017-11-29 03:57:57

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"

il supprimera l'étiquette et désactivera également l'animation.

-1
répondu bimsina 2018-08-01 10:48:12