【问题标题】:Change CodenameOne Accordion Icon UIID更改代号 One Accordion 图标 UID
【发布时间】:2017-08-31 21:39:17
【问题描述】:

如何更改 CodenameOne 手风琴上 openIcon 和 closeIcon 的 UIID?似乎没有任何方法可以做到这一点。

我最终想要做的是在 Accordion 组件的一个实例中更改用于 openIcon/closeIcon 的材质图标的颜色。我尝试了十几种不同的方式来做这件事,但没有运气。我已经能够更改手风琴容器本身的 UIID、标题和内容,但不能更改 > 图标。

我意识到我可以创建一个所需颜色的 > 图标,然后使用 setCloseIcon/setOpenIcon 来分配它。但是,我更喜欢使用材质图标,它们的颜色来自 UIID。

我在 CN1 源代码中看到 arrow.setUIID("AccordionArrow");似乎在 AccordionContent 类中使用。但是,在主题构建器中定义 AccordionArrow UIID 似乎也没有什么不同。

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    您可以通过编程方式自定义材质图标。创建以下方法并在必要时重用它。

    public static FontImage materialIcon(char charCode, float size, int color) {
        Font fnt = Font.createTrueTypeFont("native:MainLight", "native:MainLight").derive(CN.convertToPixels(size), Font.STYLE_PLAIN);
        Style s = new Style(color, 0, fnt, (byte) 0);
        FontImage fm = FontImage.createMaterial(charCode, s);
        return fm;
    }
    
    //Change material icon, size and color as appropriate
    accordion.setOpenIcon(materialIcon(FontImage.MATERIAL_ARROW_DROP_DOWN, 4, 0x4D5052));
    accordion.setCloseIcon(materialIcon(FontImage.MATERIAL_ARROW_DROP_UP, 4, 0x4D5052));
    

    【讨论】:

    • 谢谢。这看起来像是我们的代码中的一个错误,使用Label 而不是AccordionArrow,这可能只是剩下的。我已将其全部更改为使用 AccordionArrow 并添加了材料设置器,例如setOpenIcon(char)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多