如何在代号一中修改工具栏的后退命令按钮(后退箭头)?

How do I modify the toolbar's back command button (back arrow) in Codename One?

我正在尝试自定义在代号一中使用工具栏时在表单之间切换时产生的后退箭头。我知道我必须以某种方式更改 UIID,但我不确定要修改哪个组件。我试过在主题编辑器中更改 BackCommand 和 Toolbar,但没有产生任何变化。在这里提供任何代码是没有意义的,因为这完全是主题编辑器的问题。

编辑:我附上了一张显示后退箭头当前外观的图片,以防我的问题不清楚(请参阅左上角)。

我猜你只是想设置颜色?有多种方法可以自定义它,而且它们都比较复杂。

后退命令就是 BackCommand UIID,您可以通过 designer/CSS 自定义它。您也可以类似地自定义 TitleCommand 的颜色。

你说,提供代码没有意义,因为这将是主题编辑器的问题。正如谢伊指出的那样,似乎没有这样简单的出路。如果您对编码解决方案感兴趣,因为您想单独设置后退按钮的样式,这是我的方法(带代码):

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

这是一个实用方法,这样您就不必每次都编写完整的代码。 您将必须自定义 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 以在每次调用时包含不同的代码