Codenameone 如何设置窗体';什么是工具栏?
我正在尝试更改窗体工具栏所有元素的颜色:Codenameone 如何设置窗体';什么是工具栏?,codenameone,Codenameone,我正在尝试更改窗体工具栏所有元素的颜色: public class LoginForm extends Form{ private Form formSplash; public LoginForm(Resources theme) { super("Login", new BorderLayout()); setUIID("rush-login"); getToolbar().g
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;
}
}
我确实看到标题的颜色发生了变化,但“back”图标仍具有原始颜色:
有没有办法使工具栏的每个元素具有相同的颜色?我不确定这是否适用于
setBackCommand
,但您可以使用工具栏上的findCommandComponent
,并将UIID设置为所需的任何值:
Button b = toolbar.findCommandComponent(cmd);
setBackCommand
返回一个应该可以用于该操作的Command
对象,尽管在本用例中可能需要使用“将命令添加到左侧方法” 一般来说,可以从主题编辑器更改材质图标的颜色,调整前景色的默认样式。但这只有在您不激活CN1CSS支持时才有效
如果您使用css支持或希望使用不同的图标,以下是设置材质图标样式的工作示例,尤其是“后退”命令:
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);
提供了有关如何导入字体图像的指南 Shai,我能够找到按钮,但是我设置了
b.getAllStyles().setFgColor(0x4A4A4A)代码>它不会影响图标的颜色。此外,Iv'e还尝试为按钮设置文本:b.setText(“HELLO”)代码>和应用于文本的颜色,但图标仍为原始颜色。我假设这样的工具栏图标有一个全局颜色,我不介意在全局级别上更改它,但我找不到方法来做到这一点。甚至有可能吗?图标是一个材料设计图标,因此它在创建时采用颜色。这意味着您需要调用FontImage
来重新设置图标,如果您想更改颜色。