首页 文章

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

提问于
浏览
2

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

我想让它看起来像是"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);

所以,这看起来很好 . 我实际上并不需要 Headers ,这就是我为什么这么做的原因

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

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

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

现在,我还希望在向下滚动时使工具栏变小 . 我在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 回答

  • 2

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

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

相关问题