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 с показанной клавиатурой.
Надеюсь, я объяснил себе, не очень-то просто..
Спасибо
Ответы
Ответ 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);