在我们的应用中,SideMenu
是通过多次调用getToolbar().addComponent(Component, Command)
而构建的。
在平板电脑和装有平板电脑的皮肤模拟器上,没问题。
在智能手机和带皮肤的智能手机模拟器上,以纵向显示时,菜单缩小到屏幕宽度的+-10%,这当然太薄了,无法显示菜单内容。但是在横向放置时没有问题,并且侧面菜单宽度大于10%。
无论有没有Toolbar.setOnTopSideMenu
,我都尝试过相同的行为。
以下是用于向菜单中添加项目的片段(从Form
调用):
getToolbar().addComponentToLeftSideMenu(
createMenuItem(tr.translate("app.menu.home")), //tr.translate retrieve the translated key
Command.create("",
null,
ev-> initAndShowForm()));
这是createMenuItem方法:
public static Container createMenuItem(String title, Image leftIcon)
{
Container menuItem = new Container(new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER));
menuItem.setUIID("MenuItemContainer");
Label label = new Label(title);
label.setUIID("MenuItemLabel");
menuItem.add(BorderLayout.CENTER, label);
Label leftIconLabel = null;
if(leftIcon != null)
{
leftIconLabel = new Label(leftIcon);
leftIconLabel.setUIID("MenuItemLabel");
menuItem.add(BorderLayout.WEST, leftIconLabel);
}
Label rightIconLabel = new Label(Fly.theme.getImage("icon-arrow.png"));
rightIconLabel.setUIID("MenuItemLabel");
menuItem.add(BorderLayout.EAST, rightIconLabel);
if(leftIconLabel != null)
Component.setSameHeight(label, leftIconLabel, rightIconLabel);
else
Component.setSameHeight(label, rightIconLabel);
return menuItem;
}
这是模拟器中的两个屏幕截图(在真实设备上的行为完全相同)。左侧为Nexus 5外观,右侧为iPad 3:
以下是组件的UIID约束:
MenuItemContainer:
MenuItemLabel:
SideNavigationPanel:
我不明白是什么原因引起的,我的参数对我来说似乎并不奇怪...