Прокрутка вниз при добавлении элемента в RecyclerView при открытой клавиатуре - PullRequest
0 голосов
/ 25 февраля 2020

Когда я добавляю новый элемент списка, с открытой клавиатурой, элемент списка появляется за клавиатурой и, таким образом, становится невидимым. Как автоматически прокрутить его вниз, чтобы он стал видимым?

Имейте в виду, что я уже решил следующее:

  • При открытии клавиатуры прокрутите RecyclerView чтобы сделать последний элемент видимым: Решено

Последняя оставшаяся проблема - когда клавиатура уже открыта. Он работает нормально, когда я открываю клавиатуру в первый раз. Когда я нажимаю «отправить», элемент добавляется за клавиатурой, и когда я хочу, чтобы он прокручивался вверх

  1. , я нажимаю «отправить сообщение» New message

  2. Вот что происходит. Он спрятан за клавиатурой

When I've hit

1 Ответ

1 голос
/ 25 февраля 2020

Настройте LayoutManager на обратный макет, чтобы RecyclerView сохранял свое положение относительно своего нижнего края вместо верхнего:

LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setReverseLayout(true);
myRecycler.setLayoutManager(layoutManager);

Не нужно автоматически выполнять прокрутку до последней позиции вашего адаптера. более того, если у вас ранее был код для этого, вы должны удалить его.

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

И, если вы непосредственно добавляете данные адаптера установить, вы должны добавить в начало списка Адаптера:

myDataList.add(0, myNewItem); // Add to the beginning of the list shifting previous items over
notifyDataSetChanged(); // Notify the adapter to refresh
...