Ich habe TextField in einem Formular und wenn es fokussiert ist, erscheint eine Tastatur. Wenn ich nun mit dieser Tastatur den Zurückbefehl berühre, verringert sich die Bildschirmhöhe. Ich habe einige Padding in Bezug auf Bildschirmhöhe angepasst. Die Tastatur beeinflusst also die Einstellungen. Und wenn ich wieder zum Formular mit TextField und Touch-Back-Icon gehe, ohne das Keypad eingeschaltet zu haben, dann sind die Anpassungen in Ordnung. Wie man es löst?Tastatur verringert den Bildschirm Höhe Problem - codenameone
Suche Textfeld in einem Formular
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);
Hauptform, wo die Bildschirmhöhe ändert sich, wenn Tastatur ein- oder ausgeschaltet in obigen Form ist
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
zurück BTN off mit Tastatur geklickt ..... ........ gesichert mit Tastatur auf
Wie wird die von der Gerätetastatur abgebrochene Höhe hinzugefügt?
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);
});
Ausrichtung Listener wird durch sizeChangeListener aufgehoben. Wie man es repariert?
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();
}
}
});
Können Sie Screenshots und Code hinzufügen? Aus der Beschreibung geht nicht hervor, was Sie gerade erleben. – Chen
Hi @Chen Ich habe Code und Screenshots hinzugefügt. Ich habe das Padding hinzugefügt, um den Container in der Mitte des Formulars zu platzieren. Außerdem benötige ich die Höhe und Breite des Behälters gleich der Bildschirmhöhe und Bildschirmbreite. –