I have an app with drawer menu. The apps architecture requires menu items to be created dynamically, so they appers to look according to matherial design standards.
Here is the code, that creates menu.
private void formMainMenu() {
itemsByGroups = getMenuItemGroups();
Menu menu = navigationView.getMenu();
int groupId = 0;
for (Map.Entry<String, List<MainMenuUser>> entry : itemsByGroups.entrySet()) {
if (!entry.getKey().equals(MainMenuGroup.TOP.toString()) &&
!entry.getKey().equals(MainMenuGroup.BOTTOM.toString())) {
createSubmenu(menu, groupId, entry);
} else {
createMenuItem(menu, groupId, entry);
}
groupId++;
}
}
private void createSubmenu(Menu menu, int groupId, Map.Entry<String, List<MainMenuUser>> entry) {
String subMenuHeader = entry.getKey();
SubMenu subMenu = menu.addSubMenu(groupId, Menu.NONE, Menu.NONE, subMenuHeader);
List<MainMenuUser> menuUsers = entry.getValue();
for (int i = 0; i < menuUsers.size(); i++) {
int order = menuUsers.get(i).getMainMenuPositionOrder();
int titleId = menuUsers.get(i).getMainMenuItem().getTitleId();
if (menuUsers.get(i).isEnableNow(BaseApp.getApp().getSdkConfig().getSupportedFunctionality())) {
subMenu.add(groupId, i, order, titleId);
}
}
}
private void createMenuItem(Menu menu, int groupId, Map.Entry<String, List<MainMenuUser>> entry) {
List<MainMenuUser> menuUsers = entry.getValue();
for (int i = 0; i < menuUsers.size(); i++) {
if (menuUsers.get(i).isEnableNow(BaseApp.getApp().getSdkConfig().getSupportedFunctionality())) {
menu.add(groupId, i, Menu.NONE, menuUsers.get(i).getMainMenuItem().getTitleId());
}
}
}
And this is how it looks.
My question. What is the way to customize headers and items using styles, maybe, to be able change drawer appearance depending on product flavour?