【问题标题】:Codename One: Controlling the height of the title bar (toolbar)代号一:控制标题栏(工具栏)的高度
【发布时间】:2018-04-13 23:29:34
【问题描述】:

我不知道如何控制标题栏(工具栏)的高度。下面的代码不起作用:

((Label)form.getToolbar().getTitleComponent()).setIcon(image); // sets the image

// below does not work
((Label)form.getToolbar().getTitleComponent()).setHeight(50); 
form.getToolbar().setHeight(50);

我想降低高度的原因是标题栏中似乎有一些额外的空白。

我添加了一个截图:

添加:

我已根据您的建议修改了我的代码,但仍然无法正常工作:

@Override
public void run() {
    show();
}

private class SignupLoginForm extends Form {
    public SignupLoginForm(String title, BorderLayout borderLayout) {
        super(title, borderLayout);
    }

    @Override
    protected boolean shouldPaintStatusBar() {
        return false;
    }

    @Override
    protected Component createStatusBar() {
        return new Container();
    }
}

private final void show() {
    loginSignupForm = new SignupLoginForm(null, new BorderLayout());
    Tabs loginSignupTabs = new Tabs();
    Image splashScreenImage = theme.getImage("logo.png");
    ((Label) loginSignupForm.getToolbar().getTitleComponent()).setIcon(splashScreenImage);
    Style loginSignupStyle = UIManager.getInstance().getComponentStyle("Tab");
    prepareAndAddSignupTab(loginSignupTabs, loginSignupStyle);
    prepareAndAddLoginTab(loginSignupTabs, loginSignupStyle);
    loginSignupForm.add(BorderLayout.CENTER, loginSignupTabs);
    loginSignupForm.show();
}

请注意,我没有使用 GUI Builder。

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    您可以通过覆盖Form 中的shouldPaintStatusBar() 来消除该状态,TitleBar 将采用其内容的大小加上填充和边距。

    @Override
    protected boolean shouldPaintStatusBar() {
        return false;
    }
    

    或者通过修改主题中的StatusBar UIID 使所有边的填充为 0。除非您使用自定义工具栏,否则这将普遍影响您的应用。

    如果您希望在单个表单上摆脱它,您可以覆盖的另一种Form 方法是createStatusBar()。你可以只返回一个空白容器。

    @Override
    protected Component createStatusBar() {
        return new Container();
    }
    

    哪一种最适合你。

    【讨论】:

    • 它不起作用。我已经修改了上面的问题并按照您的建议添加了代码。请注意,我没有使用 GUI 构建器。
    • 我澄清了一点答案。钻石意味着形式上的超越和主题的变化。请注意,这个空间是重要,你可能真的不想删除它.​​..在 iOS 上,应用程序在状态栏下方进行绘制,因此那里有一个填充物,为时钟、电池留出空间等
    • 我明白了。所以,我不应该删除空间。
    【解决方案2】:

    另一种更好地控制工具栏行为和外观的方法是访问它的属性:

    Form form = new Form (new FlowLayout(1));
    Toolbar toolbar = form.getToolbar(); 
    
    Button button = new Button ("Button");
    Label labelToolbar = new Label ("Text");
    
    toolbar.getAllStyles().setBgTransparency(0);
    toobar.add (BorderLayout.CENTER , labelToolbar);
    toobar.add (BorderLayout.NORTH , button);
    toolbar.setUIID("MyToolBar");
    
    form.show();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-05
      • 2015-08-28
      • 2016-03-31
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      相关资源
      最近更新 更多