Codenameone 模拟器不同于IPhone
我正在设置按钮、文本字段和图片,以便在IPhone6上有一个完美的外观。 然后我把它放在真正的iPhone6上,有一些不同。 图片不在中央,一个按钮在外面有一半。 我手工编程,没有gui生成器。 设置按钮、标签、文本字段的最佳方式是什么。。。所以他们是 是否正确放置在硬件上 下面是我的示例代码:Codenameone 模拟器不同于IPhone,codenameone,Codenameone,我正在设置按钮、文本字段和图片,以便在IPhone6上有一个完美的外观。 然后我把它放在真正的iPhone6上,有一些不同。 图片不在中央,一个按钮在外面有一半。 我手工编程,没有gui生成器。 设置按钮、标签、文本字段的最佳方式是什么。。。所以他们是 是否正确放置在硬件上 下面是我的示例代码: Form dlgpass = new Form(""); dlgpass.setLayout(new BoxLayout(BoxLayout.Y_AXIS)); Image img2;
Form dlgpass = new Form("");
dlgpass.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
Image img2;
try {
img2 = Image.createImage("/xz.jpg");
Container cco2 = BoxLayout.encloseX();
Label llc1 = new Label(" ");
Label llc2 = new Label(" ");
cco2.getStyle().setMarginBottom(50);
cco2.getStyle().setMarginTop(20);
cco2.add(llc1).add(img2).add(llc2);
dlgpass.add(cco2);
Label ll4 = new Label(" ");
Label ll5 = new Label(" ");
Container cco3 = BoxLayout.encloseX();
Label llc3 = new Label(„test");
cco3.getStyle().setMarginTop(100);
cco3.add(ll4).add(llc3).add(ll5);
Container cco4 = BoxLayout.encloseX();
TextField pa = new TextField("", "Password", 16, TextField.PASSWORD);
Label ll6 = new Label(" ");
Label ll7 = new Label(" ");
cco4.getStyle().setMarginTop(60);
cco4.add(ll6).add(pa).add(ll7);
dlgpass.add(cco4);
Button logi = new Button(" login ");
logi.addActionListener((e) -> chlogi(pa.getText(),ce));
Label ll1 = new Label(" ");
Label ll2 = new Label(" ");
Container cco1 = BoxLayout.encloseX();
cco1.getStyle().setMarginTop(60);
cco1.add(ll1).add(logi).add(ll2);
dlgpass.add(cco1);
图片为629x810像素,24位颜色。
这是一个用于登录的Splashscreen
图片如下:
编辑
陈,这就是我试过的。这是你的意思吗
Form dlgpass = new Form("", new BorderLayout());
Image img2;
img2 = Image.createImage("/xx.jpg");
ScaleImageLabel simg = new ScaleImageLabel(img2);
dlgpass.add(BorderLayout.CENTER, simg);
Container cco = new Container(new BorderLayout());
TextField pa = new TextField("", "Password", 16, TextField.PASSWORD);
cco.addComponent(BorderLayout.NORTH,pa);
FlowLayout flow = new FlowLayout(Component.CENTER);
flow.setValign(Component.BOTTOM);
Container cco1 = new Container(flow);
Button logi = new Button(" login ");
logi.addActionListener((e) -> chlogi(pa.getText(),ce));
cco1.addComponent(logi);
cco.addComponent(BorderLayout.SOUTH,cco1);
dlgpass.addComponent(BorderLayout.SOUTH,cco);
要了解布局定位的可移植性,请查看关于有效使用布局管理器的视频
还可以查看允许图像适应各种大小的多图像。要了解版面定位的便携性,请查看此视频,了解如何有效使用版面管理器
还可以查看允许图像适应各种大小的多图像。避免空格、空标签,在组件上设置边距使用布局将组件放置在起始位置。 在您的用例中,我可能会这样做:
- 表单-边框布局
- ScaleImageLabel-中心
- 集装箱(边界布局)-南部
- 文本场-北
- 集装箱(FlowLayout中心)-南部
- 钮扣
如果需要/希望为组件留出空间,请在组件上使用setUIID(),并在主题中调整边距和/或填充(始终使用mm)避免使用空格、空标签,在组件上设置边距使用布局将组件放置在“从”上。 在您的用例中,我可能会这样做:
- 表单-边框布局
- ScaleImageLabel-中心
- 集装箱(边界布局)-南部
- 文本场-北
- 集装箱(FlowLayout中心)-南部
- 钮扣
如果您需要/想要分隔组件,请在组件上使用setUIID(),并在主题中调整边距和/或填充(始终使用mm)我们需要图片和一些代码示例,它们可能会有所不同,但根据您的描述,更多的是密度问题。稍后我将(可以)提供代码和图片。当我思考的时候,有没有一种方法可以通过屏幕宽度和高度的百分比来设置一个带有x-y坐标的按钮。如果是这样的话,IOS、Android和其他系统将不会出现问题。我们需要图片和一些代码示例,它们可能会有所不同,这可能是因为这个原因,但根据您的描述,更多的是密度问题。我将(可以)稍后提供代码和图片。当我思考的时候,有没有一种方法可以通过屏幕宽度和高度的百分比来设置一个带有x-y坐标的按钮。如果是这样的话,IOS、Android和其他系统就不会有问题了。我仍然会检查你提供的链接。您要求的示例代码现在在问题中。顺便说一句:谢谢你的帮助!陈的回答解决了问题吗?如果是这样的话,你需要接受它或者问一些澄清性的问题,这样我们就知道了……谢伊,请稍等,我现在试着用陈的提示来编写代码。但这不是目前唯一需要编码的项目。我仍然会检查你提供的链接。您要求的示例代码现在在问题中。顺便说一句:谢谢你的帮助!陈的回答解决了问题吗?如果是这样的话,你需要接受它或者问一些澄清性的问题,这样我们就知道了……谢伊,请稍等,我现在试着用陈的提示来编写代码。但这不是目前唯一需要编写代码的项目。我将尝试用您的提示来修复它。它看起来很有用。谢谢你有经验的信息。我会尝试用你的提示来修复它。它看起来很有用。感谢经验丰富的信息。