2015-09-10 3 views
9

Я хочу построить макет сообщения, как в whatsapp. У меня есть edittext и recylerView.Как нажимать recylerView вверх при появлении клавиатуры?

проблема заключается в том, что клавиатура скрывает сообщения!

Так позволяет сказать, что это в RecylerView:

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

когда появится клавиатура, я получаю это:

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

, но я хочу, чтобы получить это:

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

ПРИМЕЧАНИЕ : когда я установил linearLayoutManager.setStackFromEnd(true);, он работает, но когда есть одно сообщение, оно появляется в нижней части страницы.

+0

Пожалуйста, ознакомьтесь с [это] (http://stackoverflow.com/a/43213856/3649297) обходной путь. – Bolein95

+0

Вы поняли это @david? – steviemo

ответ

2

Способ, которым я это сделал, - установить setStackFromEnd() в соответствии с размером держателя элемента и установить adjustResize в androidManifest.

Это, как я проверяю:

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

набор adjustresize для деятельности с recyclerview и EditText:

android:windowSoftInputMode="adjustResize" 

добавить onLayoutChangeListener к вашему RecyclerView и установить scrollToPosition в data.size() -1 в 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

Я получил решение от Push up content when clicking in edit text

Просто поместите ниже код в

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

Просто указывая на * другой * SO вопрос действительно недостаточно, чтобы составить ответ. – GhostCat