Codename One的布局问题

时间:2017-03-17 15:05:14

标签: codenameone

此刻我只在模拟器中测试我的应用程序(因为我遇到了另一个帖子[Errors with Codename One "Send iOS Build" and "Send Android Build")中提到的“发送iOS构建”的问题

我遇到了一些布局问题,即没有正确使用宽度和高度。这些元素是左对齐的,右侧有未使用的空间。我需要向上和向下滚动,而不是让所有内容都适合视觉区域。请看图片。

enter image description here

enter image description here

代码是:

private final void show() {
    loginSignupForm = new Form("Company", new BoxLayout(0));
    Tabs loginSignupTabs = new Tabs();
    Style loginSignupStyle = UIManager.getInstance().getComponentStyle("Tab");
    prepareAndAddSignupTab(loginSignupTabs, loginSignupStyle);
    prepareAndAddLoginTab(loginSignupTabs, loginSignupStyle);
    loginSignupForm.add(loginSignupTabs);
    loginSignupForm.show();
}

private void prepareAndAddLoginTab(Tabs loginSignupTabs, Style loginSignupStyle) {
    loginID = new TextField();
    loginPassword = new TextField();
    Button loginButton = getLoginButton();
    Component[] loginComponents = {
            new Label("Email Address"),
            loginID,
            new Label("Password"),
            loginPassword,
            loginButton,
    };
    Container loginContainer = BoxLayout.encloseY(loginComponents);
    FontImage loginIcon = FontImage.createMaterial(FontImage.MATERIAL_QUESTION_ANSWER, loginSignupStyle);
    loginSignupTabs.addTab("Login", loginIcon, loginContainer);
}

我需要更改输入代码以获取元素:

1. expand to the maximum width (no free space on the right)
2. fit within the visual area (for top-to-bottom)

请注意我正在对元素进行编码,因为我发现(新)GUI Builder非常难以使用。

1 个答案:

答案 0 :(得分:1)

首先,不要将常量值作为Layouts的参数传递,因为未来的Codename One更新中的值可能会发生变化,这对您来说很难调试。 new BoxLayout(0)应为new BoxLayout(BoxLayout.Y_AXIS)BoxLayout.y()

以上是出现问题但不是唯一的问题,因为BoxLayout没有将0识别为有效参数,因为它只有3 X_AXIS = 1,{ {1}}和Y_AXIS = 2

如果您将上述内容更改为使用X_AXIS_NO_GROW = 3,则会有效,但从上面的屏幕截图中看,这不是最佳解决方案。

总之,将您的代码更改为:

BoxLayout.Y_AXIS