0

我想禁用底部导航的移位模式,我使用了一个辅助类来做到这一点。

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

但它给了我对于 BottomNavigationItemView 类型的方法 setShiftingMode(boolean) 未定义

4

0 回答 0