У меня есть Listview
с EditTexts
в каждой ячейке. Всякий раз, когда я добавляю текст к точке, в которой EditText
растет 1 строка, Listview
прокручивается вверх (и обычно удаляет EditText
из представления, делая это).
Я нашел несколько вопросов об этом, но у них только есть "хаки" в качестве ответов и ничего, что работает для меня.
ListView прокручивает вверх, когда печатает в многострочном EditText
Listview с edittext - автоматический прокрутка дальше и далее
EDIT: После большого количества исследований я обнаружил, что это связано с изменением размера editText, что приводит к тому, что ListView компонует его вложенные объекты, а затем возвращается к началу. Я хочу найти способ для EditText расти, оставаясь на том же месте.
Я попробовал это из-за предложения, которое я нашел в Интернете, но, несмотря на то, что он держит Listview
на правильной высоте, он очищает фокус от EditText
, и я не могу вернуть его с помощью requestFocus
.
private Stirng getTextWatcher(){
return new TextWatcher(){
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override public void afterTextChanged(Editable s) {
listView.setSelection(index);
}
}
}
Так что мне нужно будет:
-
У вас есть способ, чтобы
Listview
не прокручивался автоматически вверх, когда дополнительные объекты снова выкладываются или -
Способ сфокусировать мой
EditText
после вызоваListView.setSelected()
или 3. Иметь другой способ прокруткиListview
, который не очистит фокус отEditText
.
Для параметра
- Я пробовал
scrollTo()
иsmoothScrollToPosition()
.scrollTo
по какой-то причине работает, но скрывает определенные элементы изListview
(они становятся невидимыми, а не загружаются). ИsmoothScrollToPosition()
создает анимацию, в которойListview
переходит к вершине, а затем возвращает пользователя к элементу (и делает это 2 или 3 раза).