2010-12-30 11 views
8

Ho trovato il vecchio post this che sicuramente aiuta con il mio problema, ma sto notando che non sembra davvero che risolva il mio problema. Ho capito che ho bisogno di impostare android: windowSoftInputMode = "adjustPan" per la mia attività. Ma il problema è che semplicemente non è sufficiente.Tastiera virtuale sovrapposti con campo EditText

Il campo di testo è verso la parte inferiore della vista e quando viene visualizzata la tastiera, la vista cambia leggermente ma solo la parte superiore di EditText. Il campo di testo ha la funzione di completamento automatico attivata e quando inizia a mostrare le opzioni di completamento automatico, la vista si apre leggermente più in basso, ma in realtà finisce ancora più oscurata dalle opzioni di completamento automatico. Rende il campo di immissione del testo molto difficile da usare poiché non puoi vedere nulla che stai scrivendo.

È un campo di input multilinea e quando il testo scorre verso la riga successiva, la vista si sposterà più lontano, in modo da poter effettivamente vedere le righe precedenti del testo. Ma non riesci a vedere cosa stai digitando, il che penso sia piuttosto importante.

Qualcuno ha qualche idea su come risolvere questo problema?

+0

Quindi l'idea migliore che ho avuto è quella di far sì che i campi sopra di esso siano "invisibili" o "spariti", ma non è sicuramente una soluzione ideale. Grazie per l'aiuto di Phobos, ma sfortunatamente tutta la soluzione non fa altro che ridurre il campo in cui sto cercando di concentrarmi, il che non è quello che sto cercando di fare. –

risposta

10

Quindi, ho trovato quello che sembra essere la causa del problema. Nel mio AndroidManifest.xml avevo impostato

<uses-sdk android:minSdkVersion="3" /> 

A quanto pare, utilizzando un minSdkVersion sotto "4" è stata alla radice del problema. Passando a "4", il layout appariva come avrebbe dovuto e EditText aveva la prima riga sopra la parte superiore della tastiera morbida in modo appropriato.

Grazie per l'aiuto, Phobos.

+0

Wow, grazie per questo suggerimento! Non l'avrei mai trovato senza di esso. –

+0

Soluzione perfetta, problema esatto avevo –

+1

Ho lo stesso problema. Il mio layout ha 7 Modifica testo e parte superiore dello schermo c'è un pulsante e in fondo allo schermo c'è un altro pulsante.Ho usato e android: windowSoftInputMode = "adjustPan" nella mia attività nel file AndroidManifest ma quando il softkeyboard è aperto e cerco di andare al pulsante in basso non mi permette vedere. Il mio layout totale viene eseguito utilizzando il layout relativo. Cosa devo fare per vedere il pulsante in basso se ho aperto la softkey facendo clic sul secondo testo di modifica (vuoi impostare il valore in secondi e poi vuoi fare clic sul pulsante in basso). –

3

Avvolgere l'interfaccia utente in un contenitore ScrollView. Ciò consentirà all'utente di vedere l'intera interfaccia utente, anche se scorrendo, se necessario. L'interfaccia utente potrebbe non essere abbastanza grande da scorrere senza la tastiera sullo schermo, ma quando viene visualizzata la tastiera riduce effettivamente le dimensioni dello schermo.

+0

Potrei essere frainteso, ma il mio intero file layout.xml è un RelativeLayout. Se stai suggerendo di avvolgere il RelativeLayout all'interno di un ScrollView (ad esempio ?), Ho provato a farlo e non ho avuto successo. Si finisce con lo stesso identico modo. Potrebbe essere parametri che sto usando, o qualcosa del genere, ma sembra identico a come è fatto. Se non ho usato match_parent per height/width e fillViewPort = "true", causerebbe un arresto anomalo o il layout apparirà in modo errato. Qualcosa che mi manca? –

+1

Dopo aver spostato il layout in ScrollView, disabilitare adjustPan. Ogni volta che ho EditTexts nell'interfaccia utente principale utilizzo questo approccio. Trovo che TableLayout funzioni meglio per me quando creo un qualche tipo di interfaccia utente. Non so quale sia il tuo layout, ma dai un'occhiata. Se RelativeLayout non funziona, vedi se riesci a farlo con TableLayout. – Phobos

+0

Sfortunatamente, il campo EditText in questione non è impostato su un'altezza specifica, quindi sembra non funzionare. L'altezza è impostata su "match_parent" (per riempire lo 'spazio rimanente' del layout) e la sua dimensione si basa sulla dimensione relativa della vista sopra e sulla vista sottostante. Quindi, quello che succede è se utilizzo AdjustResize invece di adjustPan, il campo si riduce e quasi scompare, invece di scorrere correttamente nell'area visualizzabile. –

Problemi correlati