此刻我只在模拟器中测试我的应用程序(因为我遇到了另一个帖子[Errors with Codename One "Send iOS Build" and "Send Android Build")中提到的“发送iOS构建”的问题
我遇到了一些布局问题,即没有正确使用宽度和高度。这些元素是左对齐的,右侧有未使用的空间。我需要向上和向下滚动,而不是让所有内容都适合视觉区域。请看图片。
代码是:
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非常难以使用。
答案 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