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

时间:2019-04-23 04:23:50

标签: java codenameone

我正在尝试自定义使用Codename One中的工具栏时在窗体之间进行切换而导致的后退箭头。我知道我必须以某种方式更改UIID,但是我不确定要修改哪个组件。我曾尝试在主题编辑器中更改BackCommand和工具栏,但尚未进行任何更改。这里没有提供任何代码是没有意义的,因为这绝对是主题编辑器的问题。

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

The current state of my back arrow button

3 个答案:

答案 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的颜色。