Codenameone表单添加了另一个标题,而不是在添加工具栏时更新

时间:2016-01-08 04:09:24

标签: android codenameone

在我的Codenameone应用中向我的表单添加工具栏时,我遇到了一个奇怪的问题。如果我在表单上设置了一个工具栏,它会显示另一个标题,其中包含工具栏汉堡包和上一个表单标题下方的新标题,而不是像我期望的那样替换它。它看起来像这样: enter image description here

当我在Codenameone模拟器中运行时,功能可以正常替换旧标题,但是当我进行Android构建并在Nexus 5(6.0.1)上运行时,我得到图像中显示的这种奇怪的行为)。后箭头和12" 12;是previousForm的标题

这是我的代码,我在这里使用Toolbar用法做错了吗?

import org.joda.time.{DateTimeZone}
import org.joda.time.format.DateTimeFormat

编辑:添加个人信息,如果我打开侧面菜单一次,顶部的旧标题栏缩小了,我离开了单个正确但格式不正确的标题区域。

2 个答案:

答案 0 :(得分:1)

这可以通过在设置工具栏后从表单中删除所有命令来修复,然后在需要时向工具栏添加一个新的后退命令。

void goShowResource(final Form previousForm) {
    previous = previousForm;
    final Toolbar bar = new Toolbar();
    final Form rd = new Form("resource details");
    final Resource thisResource = this;

    rd.removeAllCommands();
    rd.setBackCommand(null);
    rd.setToolbar(bar);

    //Add back command
    Command back = new Command("back") {

        @Override
        public void actionPerformed(ActionEvent evt) {
            previousForm.showBack();
        }
    };
    bar.addCommandToSideMenu(back);

    bar.addCommandToSideMenu(new Command("command 1") {
        @Override
        public void actionPerformed(ActionEvent evt) {
            AddResources ar = new AddResources(settings, thisResource);
            ar.goAddResources(rd);
        }
    });

    bar.addCommandToSideMenu(new Command("command 2") {
        @Override
        public void actionPerformed(ActionEvent evt){
            UpdateResource ur = new UpdateResource(settings);
            ur.goUpdateResource(rd, thisResource);
        }
    });

    rd.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
    showDetails(rd);
    rd.show();
}

答案 1 :(得分:1)

您应该对应用中的所有表单使用Toolbar,或者在使用工具栏时禁用默认的本机菜单栏。您可以通过编辑主题并选择常量选项卡,然后按“添加”并选择commandBehavior=Side来完成后者。

Android当前默认使用本机ActionBar行为,Toolbar隐式覆盖,但是当从本机到轻量级组件发生转换时,事情会变得非常毛茸茸(并且可能看起来也不自然)所以我们建议选择一个UI范例并继续使用它。

由于ActionBar是一个易变的API,我们建议Toolbar向前发展,因为它可以更加自定义,并为我们提供了很多控制。