6

Il mio obiettivo è quello di ottenere ciò che la maggior parte delle app di messaggistica come Facebook Messenger, Viber, Come fare quando si visualizza un allegato. Se la tastiera Soft è visibile e l'utente desidera allegare qualcosa, la tastiera è nascosta e il foglio allegato viene presentato al suo posto.Regola il layout quando viene visualizzata o nascosta la tastiera virtuale Android

Per fare in modo che questo funzioni, le modifiche al layout dovrebbero avvenire quando cambia la dimensione della vista radice. In caso contrario, si verifica un errore grafico in cui le modifiche del layout vengono applicate poco prima che la tastiera venga visualizzata/nascosta.

Se potessi cambiare il mio layout nel momento esatto in cui la tastiera è nascosta, potrei farlo bene. Ho provato a utilizzare onGlobalLayoutListener ma senza il risultato desiderato.

enter image description here

risposta

0

Il posto migliore per scoprire se il layout è cambiato a causa della tastiera (dis) apparire e agire sul cambiamento è dentro onMeasure() del layout radice.

In modo più dettagliato, ho creato un LinearLayout personalizzato, che viene utilizzato come layout principale. Ho eseguito l'override di onMeasure e I calculate qual è l'altezza corrente della tastiera. A seconda dell'altezza della tastiera e se la griglia degli allegati deve essere visibile o meno, cambio la visibilità della griglia degli allegati. Posso anche impostare l'altezza della griglia allo stesso modo della tastiera.

Il risultato è come se la griglia fosse sempre sotto la tastiera e la vista testo rimanga nella stessa posizione verticale.

0

aggiungere questa riga nel manifesto della vostra attività.

<activity 
     android:name="com.your.Activity" 
     android:windowSoftInputMode="stateHidden|adjustPan" /> 
+0

Questo non aiuta. Io ** voglio ** la tastiera per cambiare il layout, ma quando viene nascosto voglio essere in grado di mantenere il layout nella sua posizione precedente in modo che venga visualizzata la vista degli allegati. Non riesco a capire come tutte queste app abbiano questo comportamento. – Petrakeas

+0

prova questo android: windowSoftInputMode = "stateHidden | adjustPan | adjustNothing" –

0

Utilizzare questo codice Sarà utile.

android:windowSoftInputMode="adjustNothing" 
+0

Voglio che il layout cambi quando viene presentata la tastiera. Voglio riuscire a sostituire la tastiera con la vista degli allegati quando la tastiera viene chiusa. – Petrakeas