如何设置Form的工具栏的Back图标的颜色?

时间:2017-07-05 21:28:23

标签: codenameone

我试图更改表单工具栏中所有元素的颜色:

public class LoginForm extends Form{

    private Form formSplash;

    public LoginForm(Resources theme) {
        super("Login", new BorderLayout());
        setUIID("rush-login");
        getToolbar().getTitleComponent().setUIID("rush-login-title");
        getToolbar().getAllStyles().setBgTransparency(0);
        getToolbar().setBackCommand("Back", e -> {
                    if(formSplash != null) {
                        formSplash.showBack();
                    }
        });
        setScrollable(false);
    }

    public void setFormSplash(Form formSplash) {
        this.formSplash = formSplash;
    }
}

我确实看到标题的颜色发生了变化,但后面的图标仍然是原始颜色:

title with back button

是否可以为工具栏的每个元素使用相同的颜色?

2 个答案:

答案 0 :(得分:1)

我不确定这是否适用于setBackCommand,但您可以在工具栏上使用findCommandComponent并将UIID设置为您想要的任何内容:

Button b = toolbar.findCommandComponent(cmd);

setBackCommand会返回一个Command对象,您应该可以使用该对象,尽管您可能需要在左侧方法中使用add命令来代替此用例。

答案 1 :(得分:0)

通常,可以从主题编辑器更改材质图标的颜色,从而调整前景色的默认样式。但这仅在不激活CN1 css支持时有效。

如果您使用css支持或要使用其他图标,这是一个样式示例,用于设置材质图标的样式,尤其是back命令:

Form my Form = new Form ();     
int color = 0xffffff;
Font materialFontBack = Font.createTrueTypeFont("fontello-back", "fontello-back.ttf");           
FontImage imageBack = FontImage.createFixed("\ue800", materialFontBack, color, 40, 40);


Command back = new Command("Back") {

     @Override
     public void actionPerformed(ActionEvent evt) {
             formStart.showBack();
     }
};

myForm.getToolbar().setBackCommand(back);

ToolBar myToolbar = myForm.getToolbar();
Button buttonToolbar = myToolbar.findCommandComponent(back);
buttonToolbar.setIcon(imageBack);

here是有关导入字体图像的指南。