SoftKeyboard che nasconde EditText

Ho un layout che utilizza un EditText per consentire agli utenti di cercare un database e compilare un ListView. EditText è circa 2/3 del modo dalla parte superiore dello schermo (posizionato sopra un ImageView e seguito da alcuni testi introduttivi).

Il problema è che la tastiera virtuale nasconde l’EditText, quindi l’utente non può vedere cosa sta digitando. (Ho disabilitato l’auto-suggerimento.)

Ho provato LinearLayout, RelativeLayout, paddings e diversi allineamenti / centraggi, ma non riesco ancora a farlo funzionare correttamente. EditText è nascosto, viene spinto fuori dalla parte superiore dello schermo, oppure viene “schiacciato” e distorto.

Suggerimenti ???

Una soluzione ansible è spostare il EditText nella parte superiore dello schermo. Tuttavia, questo si discosta dal disegno grafico che mi è stato dato.

Un’altra ansible soluzione è per me rendere la tastiera virtuale aperta a schermo intero (non so come, però). Questo comunque nasconde l’EditText, ma poi posso ritriggersre l’autosuggerimento in modo che l’utente possa vedere cosa sta scrivendo … una specie di … perché può solo vedere i suggerimenti per quello che sta digitando.

Ecco il mio ultimo tentativo. Vedi “introFrame”.

             

Quello che stai cercando è l’attributo windowSoftInputMode di windowSoftInputMode . Puoi impostarlo nel tuo file AndroidManifest.xml e dargli un valore come:

  • adjustResize : “La finestra principale dell’attività viene sempre ridimensionata per lasciare spazio alla tastiera adjustResize sullo schermo.”
  • adjustPan : “La finestra principale dell’attività non viene ridimensionata per lasciare spazio alla tastiera virtuale, ma il contenuto della finestra viene automaticamente spostato in modo tale che la messa a fuoco corrente non sia mai oscurata dalla tastiera e gli utenti possano sempre vedere ciò che stanno digitando. è generalmente meno desiderabile del ridimensionamento, poiché l’utente potrebbe dover chiudere la tastiera virtuale per accedere e interagire con parti oscurate della finestra. ”

adjustResize probabilmente funzionerà per te, a patto di avvolgere il layout in una ScrollView. Potrebbe avere effetti negativi se si dispone di un’immagine bitmap in background, in quanto verrà ridimensionata, nel qual caso si consiglia di utilizzare adjustPan.

  

o

  

Ulteriori informazioni sono disponibili al link sopra.

Ciò che ha funzionato per me è di abbandonare il mio LinearLayout di più alto livello in una scrollView (ScrollView può avere un solo figlio). Ciò ha permesso all’intera attività / modulo di scorrere verso l’alto e non ingombrare il testo di EditText.

Per prima cosa, ho impostato la mia attività:

  

Poi ho fatto la cosa di ScrollView di cui sto parlando:

      

basta usare seguendo in manifest …

   

prova a dare al testo di modifica un layout_weight (cioè layout_weight = 1), questo potrebbe avere altri effetti sugli altri tuoi elementi di layout che potresti dover elaborare, ma questo può aiutare a rimanere visibile quando viene visualizzata una tastiera morbida