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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top