SideMenu-智能手机和带有智能手机皮肤的模拟器的宽度错误

时间:2018-11-06 16:52:31

标签: codenameone

在我们的应用中,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: enter image description here

以下是组件的UIID约束:

MenuItemContainer:

  • 没有背景
  • 背景色+透明度
  • 左对齐
  • 边距LR 30像素,TB 20像素

MenuItemLabel:

  • 前景颜色+透明度
  • 左对齐

SideNavigationPanel:

  • 背景图像缩放以获取渐变

我不明白是什么原因引起的,我的参数对我来说似乎并不奇怪...

0 个答案:

没有答案