Reputation: 3337
I have TextField in a form and when it is focused, a keypad appears. Now if I touch back command with this keypad on, the screen height decreases. I have some padding adjusted with respect to screen height. So the keypad affects the adjustments. And if I again go to the form with textField and touch back icon without having keypad on, the adjustments are alright then. How to solve it?
search textfield in a form
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);
Main form where the screen height changes if keypad is on or off in above form
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
back btn clicked with keypad off.............backed with keypad on
how to add the height cancelled by device keyboard?
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);
});
orientation listener is cancelled out by sizeChangeListener. How to fix it?
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();
}
}
});
Upvotes: 1
Views: 69
Reputation: 3760
It is very likely the size is changed when the keyboard is opened and you get a very small value for the excessHeight
.
Put the same code (the 2nd block) on your Form sizeChanged() clause.
Upvotes: 1