Подтвердить что ты не робот

Push Listview, когда клавиатура появляется без настройкиPan

Я пытаюсь создать действие со списком и отправить сообщение внизу. Проблема в том, что когда клавиатура отображается, вместо того, чтобы нажимать нижнее содержимое, она просто скрывает ее. Я попытался использовать adjustPan, но он толкает вид отверстия вверх (так что нет способа увидеть верхние элементы списка, а также панель действий исчезает).

Если вы посмотрите на WhatsApp или Line, то функциональность заключается в том, что, когда последний элемент списка отображается в нижней части экрана, клавиатура подталкивает список (без взятия панели действий или из первых элементов экрана), и когда последний элемент списка не отображается (после некоторой прокрутки), клавиатура спрятана в нижнем списке (обычная настройкаResize).

Кто-нибудь справился с этой проблемой?

спасибо

EDIT:

Я попытаюсь представить визуальный пример:

Итак, скажем, ListView:

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

Редактирование не является частью ListView, а LinearLayout выровнено внизу. Когда отображается клавиатура, ListView становится подобным (элементы 3 и 4 скрыты клавиатурой):

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

и я хотел бы получить:

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

Я пробовал андроид: windowSoftInputMode = "adjustPan". И результат в том, что эффектные элементы 3 и 4 подталкиваются вверх, а не скрываются клавиатурой. Проблема заключается в том, что он выталкивает список, но он выталкивает его из экрана, поэтому actionBar исчезает, и даже если вы пытаетесь прокрутить вверх, я никогда не увижу элементы 1 и 2 с показанной клавиатурой.

Надеюсь, я объяснил себе, не очень-то просто..

Спасибо

4b9b3361

Ответ 1

Хорошо, что я нашел для вас решение, то, что вы хотите сделать, по существу, имеет прокрутку списка ListView каждый раз. Вы можете сделать это:

ListView l = getListView();
l.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
l.setStackFromBottom(true);

Если это Activity, сделайте это в onCreate. Если это Fragment, сделайте это в onViewCreated.

Ответ 2

В вашем макете XML:

android:stackFromBottom="true"
android:transcriptMode="normal"

Ответ 3

Однострочное решение

list_view.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);