更改CodenameOne手风琴图标UIID

时间:2017-08-31 21:39:18

标签: codenameone

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

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

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

我在CN1源中看到了arrow.setUIID(“AccordionArrow”);似乎在AccordionContent类中使用。但是,在主题构建器中定义AccordionArrow UIID似乎没有任何区别。

1 个答案:

答案 0 :(得分:2)

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

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