2017-08-31 1 views
2

Comment changer l'UIID pour openIcon et closeIcon sur un Accordéon CodenameOne? Il ne semble pas qu'il existe une méthode disponible pour le faire. Ce que j'essaye finalement de faire est de changer la couleur de l'icône matérielle utilisée pour openIcon/closeIcon dans une instance d'un composant d'Accordéon. J'ai essayé de le faire une douzaine de façons différentes sans aucune chance. J'ai été capable de changer l'UIID du conteneur accordéon lui-même, l'en-tête et le contenu, mais pas l'icône>. Je réalise que je pouvais créer une icône> de la couleur désirée et ensuite utiliser setCloseIcon/setOpenIcon pour l'assigner. Cependant, je préférerais utiliser l'icône de matériel, et ceux-ci obtiennent leur couleur de l'UIID.Changement de nom de code Icône Accordéon UIID

Je vois dans la source CN1 que arrow.setUIID ("AccordionArrow"); semble être utilisé dans la classe AccordionContent. Cependant, la définition d'un UIID AccordionArrow dans le générateur de thème ne semble pas non plus faire la différence.

Répondre

2

Vous pouvez personnaliser les icônes de matériau par programme. Créez la méthode ci-dessous et réutilisez-la si nécessaire.

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

Merci. Cela ressemble à une erreur dans notre code, 'Label' est utilisé à la place de' AccordionArrow' qui est probablement juste restes. J'ai tout changé pour utiliser 'AccordionArrow' et ajouter des setters de matériaux, par exemple. 'setOpenIcon (char)' –