Wie ein Textbearbeitungsfeld „über“ den Bildschirm zeigen?
-
19-08-2019 - |
Frage
Ich habe eine Anwendung, die ein primäres Layout Porträt hat (es wird als Porträt fest), und es gibt einen Ort in Text einzugeben. Ich möchte wie ein Popup-Fenster im Querformat starten mit dem Hintergrundbild verschleiert werden. Ich weiß, dass es ein Popup-Widget ist, aber alle Ideen den Text Eingabefeld für das Drehen wäre toll. Drehen in eine Portraitansicht (Textfeld nur), wenn die Tastatur funktionieren würde herausgeschoben wird auch, wie würden Sie einen neuen Bildschirm mit dem Textfeld auf der Tastatur Dia zeigt.
Lösung
Die einfachste Lösung für Ihr Problem ist Ihre EditText
in einer separaten dialog
Themen Aktivität anzuzeigen, die Sie aus Ihrer Haupt (Portrait-fix) Aktivität starten.
Die EditText Aktivität sollte ihre Orientierung nicht fixiert haben, so dass es drehen, wie man erwarten würde, wenn Sie die Tastatur herausziehen.
Erstellen der Texteingabe Aktivität
Erstellen Sie eine neue Aktivität enthält nur die EditText Blick und alles, was Sie aufnehmen möchten (wahrscheinlich OK / Abbrechen Buttons und vielleicht ein Etikett?). Innerhalb der manifest sein Thema auf Theme.Dialog
.
<activity android:name="TextEntryActivity"
android:label="My Activity"
android:theme="@android:style/Theme.Dialog"/>
Fogging oder die Aktivitäten Verwischen hinter einem Dialog wird durch Modifizieren der Fenstereigenschaften der Vordergrundaktivität (Ihr Texteingabedialog) durchgeführt. Innerhalb es onCreate Methode Gebrauch getWindow().setFlags
ist auf alle Hintergrundaktivitäten anwenden zu verwischen.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Starten und Lesen eingegebenen Werte aus der Texteingabe Aktivität
Verwenden startActivityForResult
die Texteingabeaktivität zu starten. Innerhalb dieser Aktivität Anruf setResult
zurückzukehren, um die Textzeichenfolge innerhalb der zurückgegebenen Absicht eingegeben unter Verwendung der Techniken, die in diesen Beitrag .
überschreiben Sie die onActivityResult
Methode für das Ergebnis aus der Unter Aktivität zu hören.
Triggerung Einführung auf Tastatur ausgesetzt
Sie können die Texteingabe Aktivität starten, wann immer Sie wollen, aber wenn Sie es immer angezeigt werden soll, wenn die Tastatur freigelegt ist, können Sie dieses Ereignis erfassen explizit.
Starten Sie, indem Sie das android:configChanges
Attribut Manifest Eintrag Porträt Aktivität. Es sollte hören für keyboardHidden
registriert werden.
android:configChanges="keyboardHidden"
Im Rahmen dieser Aktivität, Überschreibung onConfigurationChanged
die Texteingabeaktivität zu starten.
@Override
public void onConfigurationChanged(Configuration newConfig) {
Intent i = new Intent(this,TextEntryActivity.class);
startActivityForResult(i, STATIC_INTEGER_VALUE);
}
Sie mögen überprüfen, um die Tastatur zu bestätigen, ausgesetzt zu sein (und nicht versteckt) die newconfig Variable vor der Texteingabeaktivität zu starten.
Sie können auch die gleiche Technik verwenden, um automatisch aus der Texteingabe Aktivität zurückzukehren, wenn die Tastatur versteckt ist.