Codenameone 表单添加另一个标题而不是在添加工具栏时更新
Codenameone Form adds another title instead of updating when Toolbar added
我 运行在我的 Codenameone 应用程序中向我的表单添加工具栏时遇到了一个奇怪的问题。如果我在我的表单上设置一个工具栏,它会显示另一个标题,工具栏汉堡包和新标题位于前一个表单的标题下方,而不是像我期望的那样替换它。它看起来像这样:
该功能可以很好地替换旧标题,就像我在 Codenameone 模拟器中 运行 时所期望的那样,但是当我进行 Android 构建和运行 它在 Nexus 5 (6.0.1) 上。后退箭头和“12 of 12”是上一个表格的标题
这是我的代码,我在使用工具栏时是否做错了什么?
void goShowResource(final Form previousForm) {
previous = previousForm;
final Toolbar bar = new Toolbar();
final Form rd = new Form("resource details");
final Resource thisResource = this;
rd.setToolbar(bar);
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();
}
编辑:附加信息,如果我打开侧边菜单一次,顶部的旧标题栏会缩小,我只剩下一个正确但格式不正确的标题区域。
这可以通过在设置工具栏后从表单中删除所有命令来解决,然后根据需要向工具栏添加一个新的返回命令。
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();
}
您应该对应用程序中的所有表单使用 Toolbar
,或者在使用工具栏时禁用默认的本机菜单栏。您可以通过编辑主题并选择常量选项卡然后按 "Add" 并选择 commandBehavior=Side
.
来完成后者
Android 当前默认为本机 ActionBar
行为并且 Toolbar
隐式覆盖它,但是当从本机组件到轻量级组件的转换发生时,事情会变得非常棘手(并且也可能看起来不自然)所以我们建议选择一种 UI 范式并使用它。
由于 ActionBar
是一个不稳定的 API,我们建议 Toolbar
继续前进,因为它的可定制性更高,并且给了我们很多控制权。
我 运行在我的 Codenameone 应用程序中向我的表单添加工具栏时遇到了一个奇怪的问题。如果我在我的表单上设置一个工具栏,它会显示另一个标题,工具栏汉堡包和新标题位于前一个表单的标题下方,而不是像我期望的那样替换它。它看起来像这样:
该功能可以很好地替换旧标题,就像我在 Codenameone 模拟器中 运行 时所期望的那样,但是当我进行 Android 构建和运行 它在 Nexus 5 (6.0.1) 上。后退箭头和“12 of 12”是上一个表格的标题
这是我的代码,我在使用工具栏时是否做错了什么?
void goShowResource(final Form previousForm) {
previous = previousForm;
final Toolbar bar = new Toolbar();
final Form rd = new Form("resource details");
final Resource thisResource = this;
rd.setToolbar(bar);
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();
}
编辑:附加信息,如果我打开侧边菜单一次,顶部的旧标题栏会缩小,我只剩下一个正确但格式不正确的标题区域。
这可以通过在设置工具栏后从表单中删除所有命令来解决,然后根据需要向工具栏添加一个新的返回命令。
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();
}
您应该对应用程序中的所有表单使用 Toolbar
,或者在使用工具栏时禁用默认的本机菜单栏。您可以通过编辑主题并选择常量选项卡然后按 "Add" 并选择 commandBehavior=Side
.
Android 当前默认为本机 ActionBar
行为并且 Toolbar
隐式覆盖它,但是当从本机组件到轻量级组件的转换发生时,事情会变得非常棘手(并且也可能看起来不自然)所以我们建议选择一种 UI 范式并使用它。
由于 ActionBar
是一个不稳定的 API,我们建议 Toolbar
继续前进,因为它的可定制性更高,并且给了我们很多控制权。