键盘降低屏幕高度问题 - codenameone
keypad decreases the screen Height issue - codenameone
我在表单中有 TextField,当它获得焦点时,会出现一个小键盘。现在,如果我在打开此键盘的情况下触摸返回命令,屏幕高度会降低。
我根据屏幕高度调整了一些填充。所以键盘会影响调整。如果我再次进入带有 textField 的表单并在没有打开键盘的情况下触摸返回图标,那么调整就可以了。如何解决?
在表单中搜索文本字段
Container searchContainer = new Container(new BoxLayout(BoxLayout.Y_AXIS));
f.add(searchContainer);
searchTextFieldGroup = new TextField();
searchContainer.add(searchTextFieldGroup);
searchTextFieldGroup.setHint("SEARCH TABLES");
searchTextFieldGroup.setUIID("tableSearchTextField");
searchTextFieldGroup.getAllStyles().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC, Font.SIZE_SMALL));
searchTextFieldGroup.getAllStyles().setBgTransparency(0);
searchTextFieldGroup.getAllStyles().setMargin(2, 2, 2, 2);
searchTextFieldGroup.getAllStyles().setPadding(5, 5, 5, 0);
searchTextFieldGroup.getHintLabel().getAllStyles().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC, Font.SIZE_SMALL));
searchTextFieldGroup.getHintLabel().getAllStyles().setFgColor(0xcccccc);
在上面的表格中,如果键盘打开或关闭,屏幕高度会发生变化的主窗体
screenWidth = Display.getInstance().getDisplayWidth();
screenHeight = Display.getInstance().getDisplayHeight();
Container menuContainer;
(mainContainer code......)
int excessHeight = Math.max(screenHeight - t.getPreferredH() - menuContainer.getPreferredH(), 0);
int excessWidth = Math.max(screenWidth - menuContainer.getPreferredW(), 0);
menuContainer.getAllStyles().setPadding(Component.TOP, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.BOTTOM, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.LEFT, excessWidth / 2);
menuContainer.getAllStyles().setPadding(Component.RIGHT, (excessWidth / 2));
f.revalidate
在键盘关闭的情况下单击后退 btn................在键盘打开的情况下返回
.......
如何添加设备键盘取消的高度?
f.addSizeChangedListener(e -> {
screenWidth = Display.getInstance().getDisplayWidth();
screenHeight = Display.getInstance().getDisplayHeight();
int excessHeight1 = Math.max(screenHeight - t.getPreferredH() - menuContainer.getPreferredH(), 0);
int excessWidth1 = Math.max(screenWidth - menuContainer.getPreferredW(), 0);
menuContainer.getAllStyles().setPadding(Component.TOP, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.BOTTOM, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.LEFT, excessWidth / 2);
menuContainer.getAllStyles().setPadding(Component.RIGHT, (excessWidth / 2));
//Dialog.show("size change", "width " + screenWidth + " height " + screenHeight, "ok", null);
});
方向侦听器已被 sizeChangeListener 取消。如何解决?
f.addOrientationListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
if (Display.getInstance().isPortrait()) {
screenWidth = Display.getInstance().getDisplayWidth();
screenHeight = Display.getInstance().getDisplayHeight();
menuContainer.getAllStyles().setPadding(0, 0, 0, 0);
menuContainer.getAllStyles().setMargin(0, 0, 0, 0);
int excessHeight = Math.max(screenHeight - t.getPreferredH() - menuContainer.getPreferredH(), 0);
int excessWidth = Math.max(f.getWidth() - menuContainer.getPreferredW(), 0);
menuContainer.getAllStyles().setPadding(Component.TOP, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.BOTTOM, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.LEFT, excessWidth / 2);
menuContainer.getAllStyles().setPadding(Component.RIGHT, (excessWidth / 2));
} else if (!Display.getInstance().isPortrait()) {
screenWidth = Display.getInstance().getDisplayWidth();
screenHeight = Display.getInstance().getDisplayHeight();
menuContainer.getAllStyles().setPadding(0, 0, 0, 0);
menuContainer.getAllStyles().setMargin(0, 0, 0, 0);
int excessHeight = Math.max(screenHeight - t.getPreferredH() - menuContainer.getPreferredH(), 0);
int excessWidth = Math.max(f.getWidth() - menuContainer.getPreferredW(), 0);
menuContainer.getAllStyles().setPadding(Component.TOP, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.BOTTOM, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.LEFT, excessWidth / 2);
menuContainer.getAllStyles().setPadding(Component.RIGHT, (excessWidth / 2) - 5);
f.revalidate();
}
}
});
很可能在打开键盘时更改了大小,您得到的 excessHeight
值非常小。
将相同的代码(第二块)放在您的 Form sizeChanged() 子句上。
我在表单中有 TextField,当它获得焦点时,会出现一个小键盘。现在,如果我在打开此键盘的情况下触摸返回命令,屏幕高度会降低。 我根据屏幕高度调整了一些填充。所以键盘会影响调整。如果我再次进入带有 textField 的表单并在没有打开键盘的情况下触摸返回图标,那么调整就可以了。如何解决?
在表单中搜索文本字段
Container searchContainer = new Container(new BoxLayout(BoxLayout.Y_AXIS));
f.add(searchContainer);
searchTextFieldGroup = new TextField();
searchContainer.add(searchTextFieldGroup);
searchTextFieldGroup.setHint("SEARCH TABLES");
searchTextFieldGroup.setUIID("tableSearchTextField");
searchTextFieldGroup.getAllStyles().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC, Font.SIZE_SMALL));
searchTextFieldGroup.getAllStyles().setBgTransparency(0);
searchTextFieldGroup.getAllStyles().setMargin(2, 2, 2, 2);
searchTextFieldGroup.getAllStyles().setPadding(5, 5, 5, 0);
searchTextFieldGroup.getHintLabel().getAllStyles().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC, Font.SIZE_SMALL));
searchTextFieldGroup.getHintLabel().getAllStyles().setFgColor(0xcccccc);
在上面的表格中,如果键盘打开或关闭,屏幕高度会发生变化的主窗体
screenWidth = Display.getInstance().getDisplayWidth();
screenHeight = Display.getInstance().getDisplayHeight();
Container menuContainer;
(mainContainer code......)
int excessHeight = Math.max(screenHeight - t.getPreferredH() - menuContainer.getPreferredH(), 0);
int excessWidth = Math.max(screenWidth - menuContainer.getPreferredW(), 0);
menuContainer.getAllStyles().setPadding(Component.TOP, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.BOTTOM, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.LEFT, excessWidth / 2);
menuContainer.getAllStyles().setPadding(Component.RIGHT, (excessWidth / 2));
f.revalidate
在键盘关闭的情况下单击后退 btn................在键盘打开的情况下返回
如何添加设备键盘取消的高度?
f.addSizeChangedListener(e -> {
screenWidth = Display.getInstance().getDisplayWidth();
screenHeight = Display.getInstance().getDisplayHeight();
int excessHeight1 = Math.max(screenHeight - t.getPreferredH() - menuContainer.getPreferredH(), 0);
int excessWidth1 = Math.max(screenWidth - menuContainer.getPreferredW(), 0);
menuContainer.getAllStyles().setPadding(Component.TOP, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.BOTTOM, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.LEFT, excessWidth / 2);
menuContainer.getAllStyles().setPadding(Component.RIGHT, (excessWidth / 2));
//Dialog.show("size change", "width " + screenWidth + " height " + screenHeight, "ok", null);
});
方向侦听器已被 sizeChangeListener 取消。如何解决?
f.addOrientationListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
if (Display.getInstance().isPortrait()) {
screenWidth = Display.getInstance().getDisplayWidth();
screenHeight = Display.getInstance().getDisplayHeight();
menuContainer.getAllStyles().setPadding(0, 0, 0, 0);
menuContainer.getAllStyles().setMargin(0, 0, 0, 0);
int excessHeight = Math.max(screenHeight - t.getPreferredH() - menuContainer.getPreferredH(), 0);
int excessWidth = Math.max(f.getWidth() - menuContainer.getPreferredW(), 0);
menuContainer.getAllStyles().setPadding(Component.TOP, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.BOTTOM, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.LEFT, excessWidth / 2);
menuContainer.getAllStyles().setPadding(Component.RIGHT, (excessWidth / 2));
} else if (!Display.getInstance().isPortrait()) {
screenWidth = Display.getInstance().getDisplayWidth();
screenHeight = Display.getInstance().getDisplayHeight();
menuContainer.getAllStyles().setPadding(0, 0, 0, 0);
menuContainer.getAllStyles().setMargin(0, 0, 0, 0);
int excessHeight = Math.max(screenHeight - t.getPreferredH() - menuContainer.getPreferredH(), 0);
int excessWidth = Math.max(f.getWidth() - menuContainer.getPreferredW(), 0);
menuContainer.getAllStyles().setPadding(Component.TOP, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.BOTTOM, excessHeight / 2);
menuContainer.getAllStyles().setPadding(Component.LEFT, excessWidth / 2);
menuContainer.getAllStyles().setPadding(Component.RIGHT, (excessWidth / 2) - 5);
f.revalidate();
}
}
});
很可能在打开键盘时更改了大小,您得到的 excessHeight
值非常小。
将相同的代码(第二块)放在您的 Form sizeChanged() 子句上。