更改CodenameOne手风琴图标UIID

3
如何更改CodenameOne Accordion的openIcon和closeIcon的UIID?目前似乎没有可用的方法来实现这一点。
我最终尝试的目的是更改Accordion组件中一个实例中使用的openIcon / closeIcon材质图标的颜色。我已经尝试了十几种不同的方法,但都没有成功。我已经能够更改accordion容器本身、标题和内容的UIID,但不能更改“>”图标的颜色。
我知道我可以创建一个所需颜色的“>”图标,然后使用setCloseIcon / setOpenIcon进行分配。然而,我更喜欢使用材质图标,这些图标的颜色是从UIID获取的。
我在CN1源代码中看到arrow.setUIID(“AccordionArrow”)似乎被用于AccordionContent类。然而,在主题生成器中定义AccordionArrow UIID似乎也没有什么区别。
1个回答

3
您可以通过编程自定义材料图标。创建下面的方法,并在需要时重复使用它。
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) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接