Codename One:带图像的样式工具栏

时间:2016-12-16 15:52:01

标签: codenameone

在我的应用中,我无法弄清楚如何使用我的徽标图片正确设置工具栏的样式。

我想让它看起来像是" Sport1"的工具栏。应用。 Example

所以我需要工具栏左侧的后退命令,我的徽标位于资源的MultiImage中间,右侧是另一个命令。

另外,我想通过滚动让工具栏变小。 到目前为止我尝试了什么:

    res_theme = r;
    Form f = new Form(" ", new BoxLayout(BoxLayout.Y_AXIS));
    logo = res_theme.getImage("Logo_Gema_vertikal.png");
    f.getToolbar().getTitleComponent().setUIID("toolbar_image");
    Style stitle = f.getToolbar().getStyle();
    stitle.setBgTransparency(0);
    stitle.setBgImage(logo);
    stitle.setBackgroundType(Style.BACKGROUND_IMAGE_ALIGNED_CENTER);
    stitle.setPaddingUnit(Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS);
    stitle.setPaddingTop(5);

所以,这看起来很好。我实际上不需要标题,这就是为什么我

Form f = (" ", ...);

如果我没有在表单中添加标题,则工具栏会变得非常小并从工具栏中挤出背景图像。工具栏中的中心徽标只是出于造型原因,它不需要命令。有没有办法省略标题?我现在把它设置为完全透明,但对我来说这只是一种解决方法。

另外,我猜想不是将徽标设置为居中对齐的背景,我认为最好将其添加到标题部分作为图像,但我不知道这是更好还是如何做到这一点。

现在,我还希望在向下滚动时缩小工具栏。我在Codename One工具栏文档中找到了一些示例代码,但它不适用于我,因为背景图像被删除了。

这是滚动动画的代码:

    ComponentAnimation title = f.getToolbar().getTitleComponent().createStyleAnimation("Title", 200);
    f.getAnimationManager().onTitleScrollAnimation(title);

在这个例子中,它有效。我的工具栏没有,我不知道为什么。我也无法看到滚动工具栏"之后的大小。已经确定了。

我可以添加一张图片吗?在滚动我的徽标之前,有点像一个工具栏,然后在滚动时它变成一个只有textlogo图像的较小的工具栏?

以下是我尝试使其完成的全部代码:

Form f = new Form(" ", new BoxLayout(BoxLayout.Y_AXIS));
    logo = res_theme.getImage("Logo_Gema_vertikal.png");
    f.getToolbar().getTitleComponent().setUIID("toolbar_image");
    Style stitle = f.getToolbar().getStyle();
    stitle.setBgTransparency(0);
    stitle.setBgImage(logo);
    stitle.setBackgroundType(Style.BACKGROUND_IMAGE_ALIGNED_CENTER);
    stitle.setPaddingUnit(Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS);
    stitle.setPaddingTop(5);
    f.add(new SpanLabel("asdasdasdasd");
    ComponentAnimation title = f.getToolbar().getTitleComponent().createStyleAnimation("Title", 200);
    f.getAnimationManager().onTitleScrollAnimation(title);
    f.show();

1 个答案:

答案 0 :(得分:2)

从上面的例子看,如果您只是想将图像用作标题而不是使用背景图像设置工具栏样式。

只需使用((Label)toolbar.getTitleComponent()).setIcon(myImage);