Nichts hat für mich funktioniert, außer adjustPan
gemäß der Dokumentation
Das Hauptfenster der Aktivität wird nicht vergrößert, um Platz für die Bildschirmtastatur zu schaffen. Stattdessen wird der Inhalt des Fensters automatisch verschoben, damit der aktuelle Fokus niemals von der Tastatur verdeckt wird und Benutzer immer sehen können, was sie eingeben. Dies ist im Allgemeinen weniger wünschenswert als das Vergrößern, da der Benutzer möglicherweise die Bildschirmtastatur schließen muss, um auf verdeckte Teile des Fensters zuzugreifen und mit ihnen zu interagieren.
Also verwenden Sie es einfach in Ihrem onCreate() oder onCreateView() Methode wie folgt:
getDialog().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Oder setzen Sie einfach android:windowSoftInputMode="adjustPan"
im Manifest für die Aktivität, in der wir mit Dialogen arbeiten
und verwenden Sie android:windowSoftInputMode="adjustResize|stateHidden"
in jedem EditText, was dem Benutzer hilft, einfach zum nächsten Textfeld zu navigieren.
Zu beachten
Verwenden Sie niemals MATCH_PARENT, um den Dialog im Vollbildmodus anzuzeigen, da adjustPan
hier nicht funktioniert. Wenn jemand den Dialog passend zum Bildschirm machen möchte, verwendet man einfach Punkte bis 0,96 (nicht mehr), für die Höhe, damit die Tastatur ordnungsgemäß zum EditText gelangt. Wie ich es gemacht habe:
@Override
public void onStart()
{
super.onStart();
Dialog dialog = getDialog();
if (dialog != null)
{
//int height = ViewGroup.LayoutParams.MATCH_PARENT;
int width = ViewGroup.LayoutParams.MATCH_PARENT;
Display display = getActivity().getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
//int width = (int)(size.x * 0.96);
int h = (int)(size.y * 0.96);
dialog.getWindow().setLayout(width, h);
}
}
Sieh mal, wenn ich die Gesamthöhe (MATCH_PARENT) verwenden würde, würde die Bildschirmtastatur den Dialog zusammendrücken. Aber wenn ich Punkte für die Höhe verwende (hier 0,96, was fast an match_parent herankommt), funktioniert es ordnungsgemäß.
Hoffentlich hilft es jemandem :)