Codenameone 代号为1的布局问题
目前,我只在模拟器中测试我的应用程序(因为我在另一个线程[]中提到的“发送iOS构建”有问题) 我遇到一些布局问题,无法正确使用宽度和高度。元素左对齐,右侧有未使用的空间。我需要上下滚动,而不是将所有内容都放在可视区域内。请查看图片 守则如下:Codenameone 代号为1的布局问题,codenameone,Codenameone,目前,我只在模拟器中测试我的应用程序(因为我在另一个线程[]中提到的“发送iOS构建”有问题) 我遇到一些布局问题,无法正确使用宽度和高度。元素左对齐,右侧有未使用的空间。我需要上下滚动,而不是将所有内容都放在可视区域内。请查看图片 守则如下: private final void show() { loginSignupForm = new Form("Company", new BoxLayout(0)); Tabs loginSignupTabs = new Tabs(
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构建器使用起来相当困难。首先,不要将常量值作为参数传递给布局,因为这些值可能会在将来的Codename One更新中更改,这将使您难以调试。
new BoxLayout(0)
应该是new BoxLayout(BoxLayout.Y_轴)
或干脆BoxLayout.Y()
上面是出现问题的地方,但不是唯一的问题,因为BoxLayout
没有将0
识别为有效参数,因为它只有3个参数,分别是X_轴=1
,Y_轴=2
,和X_轴不增长=3
如果您将上面的更改为使用BoxLayout.Y_轴
,它将工作,但从上面的屏幕截图来看,这不是最佳解决方案
总之,将代码更改为以下内容:
private final void show() {
loginSignupForm = new Form("Company", new BorderLayout());
Tabs loginSignupTabs = new Tabs();
Style loginSignupStyle = UIManager.getInstance().getComponentStyle("Tab");
prepareAndAddSignupTab(loginSignupTabs, loginSignupStyle);
prepareAndAddLoginTab(loginSignupTabs, loginSignupStyle);
loginSignupForm.add(BorderLayout.CENTER, loginSignupTabs);
loginSignupForm.show();
}