【问题标题】:NavigationDrawer with Submenu带有子菜单的 NavigationDrawer
【发布时间】:2018-02-04 18:07:26
【问题描述】:

我想使用“afterburner”在 NavigationDrawer 上实现一些功能,例如子菜单,但我发现了一些问题,最佳做法是什么,销毁并重新创建具有子菜单的 DefaultNavigationDrawer 或为每个模块设置一个 NavigationDrawer?

我已经使用了答案代码:Gluon mobile app NavigationDrawer back button issue

但我的情况更复杂。

谢谢!

【问题讨论】:

    标签: gluon


    【解决方案1】:

    您可以从DefaultNavigationDrawer 获取NavigationDrawer 对象,然后您可以根据需要添加任意数量的项目(这些只是节点)。

    如果这些项目不是 ViewItem 实例,则您必须注意用户选择它们时要执行的操作。

    使用 Glisten-Afterburner 模板,这是您首先获得抽屉的方法,AppViewManager::registerViewsAndDrawer

    public static void registerViewsAndDrawer(MobileApplication app) {
        for (AppView view : REGISTRY.getViews()) {
            view.registerView(app);
        }
    
        NavigationDrawer.Header header = new NavigationDrawer.Header("Gluon Mobile",
                "Multi View Project",
                new Avatar(21, new Image(GluonGAf1.class.getResourceAsStream("/icon.png"))));
    
        DefaultDrawerManager drawerManager = new DefaultDrawerManager(app, header, REGISTRY.getViews()) {
            {
                // Get the drawer:
                NavigationDrawer drawer = getDrawer();
            }
        }; 
        drawerManager.installDrawer();
    }
    

    现在您可以将NavigationDrawer.Item 添加到其items 集合中:

    public static void registerViewsAndDrawer(MobileApplication app) {
        for (AppView view : REGISTRY.getViews()) {
            view.registerView(app);
        }
    
        NavigationDrawer.Header header = new NavigationDrawer.Header("Gluon Mobile",
                "Multi View Project",
                new Avatar(21, new Image(GluonGAf1.class.getResourceAsStream("/icon.png"))));
    
        // create items
        NavigationDrawer.Item subItem1 = new NavigationDrawer.Item("Sub Item 1", MaterialDesignIcon.ADD.graphic());
        NavigationDrawer.Item subItem2 = new NavigationDrawer.Item("Sub Item 2", MaterialDesignIcon.ADD_BOX.graphic());
        NavigationDrawer.Item subItem3 = new NavigationDrawer.Item("Sub Item 3", MaterialDesignIcon.ADD_LOCATION.graphic());
    
        DefaultDrawerManager drawerManager = new DefaultDrawerManager(app, header, REGISTRY.getViews()) {
            {
                // Get the drawer:
                NavigationDrawer drawer = getDrawer();
                // Add items
                drawer.getItems().addAll(new Separator(), subItem1, subItem2, subItem3);
                // TODO: provide action based on item selected
                drawer.selectedItemProperty().addListener((obs, ov, nv) -> System.out.println("Selected item " + nv));
            }
        }; 
        drawerManager.installDrawer();
    }
    

    你会得到这个:

    【讨论】:

    • 非常感谢!通过你的回答问题解决了! basic links
    • globalsuite.com.br/videos/DrawerSubmenu.gif"; width="100" height="100">
    猜你喜欢
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 2018-05-18
    • 1970-01-01
    相关资源
    最近更新 更多