此刻我'm only testing my app in the simulator (as I'在另一个线程[Errors with Codename One "Send iOS Build" and "Send Android Build"]中提到了"Send iOS Build"的问题
我遇到了一些布局问题,它没有正确使用宽度和高度 . 元素是左对齐的,有 unused space on the right side . 而且我 need to scroll up and down 而不是让所有东西都适合视觉区域 . 请看图片 .
代码是:
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 回答
首先,不要将常量值作为参数传递给Layouts,因为未来的Codename One更新中的值可能会发生变化,这对您来说很难调试 .
new BoxLayout(0)
应为new BoxLayout(BoxLayout.Y_AXIS)
或仅为BoxLayout.y()
.以上是问题出现但不是唯一的问题,因为
BoxLayout
无法识别0
作为有效参数,因为它只有3个X_AXIS = 1
,Y_AXIS = 2
和X_AXIS_NO_GROW = 3
.如果您更改上面的内容以使用
BoxLayout.Y_AXIS
,它将起作用,但从上面的屏幕截图中看,这不是最佳解决方案 .总之,将代码更改为: