web-dev-qa-db-fra.com

Impossible de résoudre la méthode 'setShiftingMode (Boolean)' dans BottomNavigationView

Après la mise à niveau vers la dernière bibliothèque de support ' 28.0.0-alpha1 ', je ne peux pas désactiver le mode décalage dans ma BottomNavigationView c'est-à-dire la fonction BottomNavigationItemView.setShiftingMode() Cette méthode n'est plus disponible.

Java.lang.NoSuchFieldException: No field mShiftingMode in class Landroid/support/design/internal/BottomNavigationMenuView; 
    W/System.err:     at Java.lang.Class.getDeclaredField(Native Method)
    at com.avocure.avocurehealth.utils.ViewUtils.removeNavigationShiftMode(ViewUtils.Java:44)
    at com.avocure.avocurehealth.ui.main.MainActivity.init(MainActivity.Java:125)
    at com.avocure.avocurehealth.ui.main.MainActivity.onCreate(MainActivity.Java:107)
    at Android.app.Activity.performCreate(Activity.Java:6679)
    at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1118)
    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2618)
    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2726)
    at Android.app.ActivityThread.-wrap12(ActivityThread.Java)
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1477)
    at Android.os.Handler.dispatchMessage(Handler.Java:102)
    at Android.os.Looper.loop(Looper.Java:154)
    at Android.app.ActivityThread.main(ActivityThread.Java:6119)
    at Java.lang.reflect.Method.invoke(Native Method)
    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:886)
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:776)

J'utilise this méthode pour désactiver le mode de décalage.

Ce serait très apprécié si quelqu'un pouvait nous dire si quelque chose a changé dans la dernière version ou s'il s'agit d'un bogue ou quelque chose d'autre.

27
Darush

trouvé la réponse. Dans la bibliothèque de support 28.0.0-alpha1, nous pouvons maintenant ajouter des étiquettes (supprimer le mode de décalage) en utilisant l’une des méthodes suivantes:

XML:

<Android.support.design.widget.BottomNavigationView
        .
        .
        .
        app:labelVisibilityMode="labeled" />

Code:

mBottomNavigationView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);

ou:

@SuppressLint("RestrictedApi")
public static void removeNavigationShiftMode(BottomNavigationView view) {
    BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
    menuView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);
    menuView.buildMenuView();
}
76
Darush