2015-09-10 20 views
9

Chcę zbudować układ wiadomości jak w WhatsApp. Mam edittext i recylerView.Jak wepchnąć recylerię w górę, gdy pojawia się klawiatura?

Problem polega na tym, że pojawia się klawiatura, która ukrywa wiadomości!

Więc powiedzmy, że to się RecylerView:

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

gdy pojawi się klawiatura, mam to:

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

ale chcę uzyskać to:

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

UWAGA : po ustawieniu linearLayoutManager.setStackFromEnd(true); działa, ale gdy jest jeden komunikat, pojawia się u dołu strony.

+0

Proszę sprawdzić [to] (http://stackoverflow.com/a/43213856/3649297) obejścia. – Bolein95

+0

Czy wymyśliłeś to na @david? – steviemo

Odpowiedz

2

Sposób, w jaki to zrobiłem, polega na ustawieniu setStackFromEnd() zgodnie z wielkością posiadacza przedmiotu i ustawiu adjustResize w androidManifest.

ten sposób sprawdzić:

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

zestaw adjustresize dla aktywności z recyclerview i EditText:

android:windowSoftInputMode="adjustResize" 

dodać onLayoutChangeListener do RecyclerView i ustawić scrollToPosition do data.size (-1) w 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

Dostałem rozwiązanie od Push up content when clicking in edit text

Wystarczy umieścić poniżej kod w

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

Po prostu wskazanie * innego * pytania SO naprawdę nie wystarcza, aby wymyślić odpowiedź. – GhostCat

Powiązane problemy