web-dev-qa-db-fra.com

Comment supprimer l'animation d'icône pour la vue de navigation inférieure dans Android

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.

17
Nabeel K

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);
83
Nabeel K

BottomNavigationViewEx est une bonne extension de BottomNavigationView . EnableShiftingMode (false) fait le travail à votre place.

7
Pei

J'ai essayé cela et ça a bien fonctionné 

BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);

Ou ce code mainactivity.xml

app:labelVisibilityMode="unlabeled"
4
Azad Qaderzadeh

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. +

0
Shangeeth Sivan

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.

0
bimsina

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);
    }
}
0
Gulam kadher