2015-09-10 5 views
9

Voglio costruire un layout di messaggio come in whatsapp. Ho un edittext e un recylerView.Come spingere recylerView su quando appare la tastiera?

il problema è quando appare la tastiera nasconde i messaggi!

Allora supponiamo questo il RecylerView:

---item 1--- 
---item 2--- 
---item 3--- 
---item 4--- 
---EditText--- 

quando l'apparire la tastiera, ottengo questo:

---item 1--- 
---item 2--- 
---EditText--- 
---Keyboard--- 

ma voglio ottenere questo:

---item 3--- 
---item 4--- 
---EditText--- 
---Keyboard--- 

NOTA : quando ho impostato linearLayoutManager.setStackFromEnd(true); funziona, ma quando c'è un messaggio viene visualizzato nella parte inferiore della pagina.

+0

Si prega di check-out [questo] soluzione alternativa (http://stackoverflow.com/a/43213856/3649297). – Bolein95

+0

Lo hai capito @david? – steviemo

risposta

2

Il modo in cui l'ho fatto è impostare setStackFromEnd() in base alle dimensioni del titolare dell'articolo e impostare adjustResize in androidManifest.

questo è come mi controllare:

if (recycleView.getChildCount() == items.size()){ 
    mLayoutManager.setStackFromEnd(true); 
} 
else{ 
    mLayoutManager.setStackFromEnd(false); 
} 
9

set adjustresize per l'attività con recyclerview e EditText:

android:windowSoftInputMode="adjustResize" 

aggiungere onLayoutChangeListener al vostro RecyclerView e impostare ScrollToPosition a data.size() -1 in onLayoutChange:

mRecyclerView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { 
@Override 

public void onLayoutChange(View v, int left, int top, int right,int bottom, int oldLeft, int oldTop,int oldRight, int oldBottom) 
{ 

mRecyclerView.scrollToPosition(mMessages.size()-1); 

} 
    }); 
0

Ho ottenuto la soluzione da Push up content when clicking in edit text

Basta mettere sotto il codice a

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 
+0

Basta puntare a * un'altra * domanda SO davvero non è abbastanza per inventare una risposta. – GhostCat