Domanda

Ho un'applicazione che ha un layout primario di ritratto (è riparato come ritratto) e c'è un posto dove digitare il testo. Vorrei lanciarmi come una finestra popup in orientamento orizzontale con l'immagine di sfondo appannata. So che esiste un widget popup, ma qualsiasi idea per ruotare la casella di modifica del testo sarebbe ottima. Anche ruotarlo in una vista verticale (solo casella di testo) quando si fa scorrere la tastiera funzionerebbe, così come mostrare una nuova schermata con la casella di testo sulla diapositiva della tastiera.

È stato utile?

Soluzione

La soluzione più semplice al tuo problema è quella di visualizzare il tuo EditText all'interno di un'attività a tema dialog separata che avvii all'interno della tua attività principale (ritratto fisso).

L'attività EditText non dovrebbe avere l'orientamento fisso, quindi ruoterà come ci si aspetterebbe quando si estrae la tastiera.

Creazione dell'attività di immissione testo

Crea una nuova attività che contiene solo la vista EditText e qualsiasi altra cosa tu voglia includere (probabilmente i pulsanti OK / Annulla e forse un'etichetta?). All'interno del manifest impostare il tema su Theme.Dialog .

<activity android:name="TextEntryActivity" 
          android:label="My Activity" 
          android:theme="@android:style/Theme.Dialog"/>

L'appannamento o la sfocatura delle attività dietro una finestra di dialogo viene effettuata modificando le proprietà Window dell'attività in primo piano (la finestra di dialogo per l'immissione di testo). All'interno del suo metodo onCreate usa getWindow (). SetFlags per applicare la sfocatura a qualsiasi attività in background.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,  
                     WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

Avvio e lettura dei valori immessi dall'attività di immissione testo

Utilizza startActivityForResult per avviare l'attività di inserimento testo. All'interno di tale attività chiama setResult per restituire la stringa di testo immessa nell'intento restituito utilizzando le tecniche descritte in questo post .

Sostituisci il metodo onActivityResult per ascoltare il risultato dall'attività secondaria.

Attivazione dell'avvio sulla tastiera esposta

Puoi avviare l'attività di immissione testo quando vuoi, ma se vuoi mostrarla sempre quando la tastiera è esposta puoi catturare esplicitamente questo evento.

Inizia aggiungendo l'attributo android: configChanges alla voce manifest dell'attività Ritratto. Dovrebbe essere registrato per ascoltare keyboardHidden .

android:configChanges="keyboardHidden"

All'interno di quell'attività, sovrascrivi onConfigurationChanged per avviare l'attività di inserimento testo.

@Override
public void onConfigurationChanged(Configuration newConfig) {  
  Intent i = new Intent(this,TextEntryActivity.class);    
  startActivityForResult(i, STATIC_INTEGER_VALUE);
}

Potresti voler controllare per confermare che la tastiera viene esposta (piuttosto che nascosta) usando la variabile newConfig prima di lanciare la voce di testo Attività.

Puoi anche usare la stessa tecnica per tornare automaticamente dall'attività di immissione del testo quando la tastiera è nascosta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top