如何在CodenameOne手风琴上更改openIcon和closeIcon的UIID?似乎没有任何方法可以做到这一点。
我最终要做的是在Accordion组件的一个实例中更改用于openIcon / closeIcon的材质图标的颜色。我试图以十几种不同的方式做到这一点,没有运气。我已经能够更改手风琴容器本身的UIID,标题和内容,但不能更改>图标。
我意识到我可以创建一个>所需颜色的图标,然后使用setCloseIcon / setOpenIcon进行分配。但是,我更喜欢使用材质图标,然后从UIID获取颜色。
我在CN1源中看到了arrow.setUIID(“AccordionArrow”);似乎在AccordionContent类中使用。但是,在主题构建器中定义AccordionArrow UIID似乎没有任何区别。
答案 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));