Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot resolve method 'setShiftingMode(Boolean)' in BottomNavigationView

After upgrading to latest support library '28.0.0-alpha1' I cannot disable shifting mode in my BottomNavigationView i.e. the BottomNavigationItemView.setShiftingMode() method is no longer available.

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) 

I use this method to disable shifting mode.

It would be very much appreciated if anyone could shed some light on whether something has changed in the latest version or is this a bug or something.

like image 700
Darush Avatar asked Jul 14 '18 18:07

Darush


Video Answer


1 Answers

Found the answer. In support library 28.0.0-alpha1 we can now add labels (remove shifting mode) using any one of the following methods:

XML:

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

Code:

mBottomNavigationView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED); 

Or:

@SuppressLint("RestrictedApi") public static void removeNavigationShiftMode(BottomNavigationView view) {     BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);     menuView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);     menuView.buildMenuView(); } 
like image 78
Darush Avatar answered Sep 26 '22 06:09

Darush