如何自定义动态创建的抽屉菜单?

时间:2017-06-21 11:05:31

标签: android android-styles navigationview

我有一个带抽屉菜单的应用程序。应用程序架构需要动态创建菜单项,因此它们可以根据符号设计标准进行查看。

以下是创建菜单的代码。

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

这就是它的外观。

enter image description here

我的问题。有什么方法可以使用样式自定义标题和项目,以便能够根据产品风格更改抽屉外观?

1 个答案:

答案 0 :(得分:1)

我认为在那里使用ListView或RecylerView会更容易。

This question可能会为您提供一些有关如何操作的见解。