自定义工具栏问题

Custom toolbar issues

我写了一个自定义工具栏。而且我很难让它发挥作用(设计明智)。我有几个问题。

1)我面临的主要问题是将菜单图标放置在它们的确切位置。当我在不同的设备上测试它时,它们之间的差距是 different.I 菜单图标也使用了 table 布局和网格布局以及分层布局中的徽标,但结果并不好。

代码:

void addTitle(Form form, Resources theme) {
    Toolbar toolbar = new Toolbar();
    form.setToolbar(toolbar);

    Container containerTitle = new Container(new BorderLayout());
    Image titleImage = theme.getImage("toolbar_bg.jpg");
    containerTitle.getAllStyles().setBgImage(titleImage);
    containerTitle.getAllStyles().setBackgroundType(Style.BACKGROUND_IMAGE_TILE_HORIZONTAL);
    containerTitle.setPreferredH(titleImage.getHeight());

    ScaleImageButton ruslanLogo = new ScaleImageButton();

    toolbar.setTitleComponent(LayeredLayout.encloseIn(containerTitle,
            FlowLayout.encloseCenter(ruslanLogo)));
    Image ruslanLogoImage = theme.getImage("ruslanLogo.png").scaledWidth(toolbar.getPreferredH() - 180);
    ruslanLogo.setIcon(ruslanLogoImage);

    Image emergencyImage = theme.getImage("emergency.png");
    Image receipeImage = theme.getImage("receipe.png");
    Image fmImage = theme.getImage("fm.png");
    Image gameImage = theme.getImage("game.png");

    TableLayout tableLayout = new TableLayout(1, 5);
    //GridLayout gridLayout = new GridLayout(5);
    Container tableContainer = new Container(tableLayout);

    Button emergencyButton = getButton(emergencyImage);
    emergencyButton.getAllStyles().setAlignment(Label.CENTER);

    Button fmButton = getButton(fmImage);
    fmButton.getAllStyles().setAlignment(Label.CENTER);

    Button gameButton = getButton(gameImage);
    gameButton.getAllStyles().setAlignment(Label.CENTER);

    Button receipeButton = getButton(receipeImage);
    receipeButton.getAllStyles().setAlignment(Label.CENTER);

    Button transparentButton = getButton(receipeImage);
    transparentButton.getAllStyles().setAlignment(Label.CENTER);
    transparentButton.setVisible(false);

    tableContainer.addComponent(tableLayout.createConstraint().widthPercentage(20), BoxLayout.encloseY(emergencyButton));
    tableContainer.addComponent(tableLayout.createConstraint().widthPercentage(20), BoxLayout.encloseY(fmButton));
    tableContainer.addComponent(tableLayout.createConstraint().widthPercentage(20), BoxLayout.encloseY(transparentButton));
    tableContainer.addComponent(tableLayout.createConstraint().widthPercentage(20), BoxLayout.encloseY(gameButton));
    tableContainer.addComponent(tableLayout.createConstraint().widthPercentage(20), BoxLayout.encloseY(receipeButton));
    containerTitle.addComponent(BorderLayout.SOUTH, tableContainer);
    toolbar.revalidate();
}

2)我检查了宽度和首选宽度,它们是不同的。对设计有影响吗?

int width = emergencyButton.getWidth(); //60
int preferredwidth = emergencyButton.getPreferredW(); //74

3)在上面的代码中,我使用背景图片高度来设置工具栏的高度。 "containerTitle.setPreferredH(titleImage.getHeight());" 这样设置高度好吗?因为在我测试过的android款手机中高度略有变化,但是在tabs中看起来大得吓人,而且我在不同的模拟器中测试过,高度相差很大。普通工具栏的工具栏高度是怎么设置的?

Image titleImage = theme.getImage("toolbar_bg.jpg");
containerTitle.getAllStyles().setBgImage(titleImage);
containerTitle.getAllStyles().setBackgroundType(Style.BACKGROUND_IMAGE_TILE_HORIZONTAL);
containerTitle.setPreferredH(titleImage.getHeight());

ScaleImageButton ruslanLogo = new ScaleImageButton();

toolbar.setTitleComponent(LayeredLayout.encloseIn(containerTitle,
        FlowLayout.encloseCenter(ruslanLogo)));

4)如何设置图标的宽度?

Image emergencyImage = theme.getImage("emergency.png");
Button emergencyButton = getButton(emergencyImage);

如果我只是这样做,有些设备图标太big.If我缩放它例如:emergencyImage.scaledWidth(screenwidth/8),图像质量是bad.If我将 preferredW 设置为 emergencyButton.setPreferredW(100),不同设备的 img 宽度差异很大。 PS主题中的图片保存为multiImage

设置首选 width/height 是有问题的,因为它暗示了相反的维度并且可能有很多含义。我注意到你使用了:

Image ruslanLogoImage = theme.getImage("ruslanLogo.png").scaledWidth(toolbar.getPreferredH() - 180);

它根据首选高度而不是 width/5 或类似的东西设置宽度。它还会在工具栏构建完成之前根据首选高度设置值,因此行为会有所不同。

首选宽度包括可能会影响您的设计的填充。我建议在设计器中创建一个中心对齐的 0 padding/margin UIID,并将其设置到所有组件以消除 padding/margin 差异并缩短代码。