最近公司项目用到navigationRailView官方控件进行导航切换,需要用到设置navigationRailView单项背景色,源码里该方法源码里被隐藏掉,考虑用反射解决问题
//注意左边是方法名(命名不太规范),得到需要设置的menuview;
Method navigationRailMenuView = navigationRailView.getClass().getDeclaredMethod("getNavigationRailMenuView");
//需要设置属性才能invoke方法
navigationRailMenuView.setAccessible(true);
//得到需要设置的menuview;
NavigationBarMenuView navigationBarMenuView = (NavigationBarMenuView)
navigationRailMenuView.invoke(navigationRailView,null);
//得到想要的item设置背景色 navigationBarMenuView.findItemView(R.id.variablesFragment).setItemBackground(R.color.f5f5f5);