我正在尝试自定义使用Codename One中的工具栏时在窗体之间进行切换而导致的后退箭头。我知道我必须以某种方式更改UIID,但是我不确定要修改哪个组件。我曾尝试在主题编辑器中更改BackCommand和工具栏,但尚未进行任何更改。这里没有提供任何代码是没有意义的,因为这绝对是主题编辑器的问题。
编辑:我已附上一张图片,显示在我的问题不清楚时(请参阅左上角),当前后退箭头的外观。
答案 0 :(得分:1)
您说,提供代码没有意义,因为这将是主题编辑器的问题。正如Shay指出的那样,似乎没有这么简单的出路。如果您另外对编码解决方案感兴趣,因为您想单独设置后退按钮的样式,这是我的方法(带有代码):
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是有关导入字体图像的指南。
答案 1 :(得分:1)
这是一种实用程序方法,因此您不必每次都编写整个代码。
您将必须自定义BackButton
UIID。这样,您还可以显示IOS / Android样式图标
public void setBackCommand(Form currentForm, Runnable r)
{
Command back = new Command("Back") {
@Override
public void actionPerformed(ActionEvent evt) {
r.run();
}
};
currentForm.getToolbar().setBackCommand(back);
Button buttonToolbar = currentForm.getToolbar().findCommandComponent(back);
buttonToolbar.setUIID("BackButton");
if(getPlatformName().equals("ios"))
FontImage.setMaterialIcon(buttonToolbar, FontImage.MATERIAL_ARROW_BACK_IOS);
else
FontImage.setMaterialIcon(buttonToolbar, FontImage.MATERIAL_ARROW_BACK);
}
然后您可以这样称呼它:
setBackCommand(currentForm, () -> {previousForm.showBack();});
您可以更改Runnable
arg以在每次调用时包含不同的代码
答案 2 :(得分:0)
我猜你只是想设置颜色?有多种自定义方式,它们都更加复杂。
后退命令只是BackCommand
UIID,您可以通过设计器/ CSS对其进行自定义。您也可以类似地自定义TitleCommand
的颜色。