Я создаю RecyclerView со списком клиентов и помещаю его в диалоговое окно. Есть задача - опустить скролл максимально вниз. Делаю это при помощи функции RecyclerView.scrollToPosition(list.size()-1).
В случае, если RecyclerView расположен в xml файле активити - все нормально. У меня список из клиентов от 0 до 14. Указываю RecyclerView.scrollToPosition(14) и скролл опускается в самый низ.
Теперь делаю inflate для нового RecyclerView и помещаю его в диалог. Адаптер тот же самый. Но когда я выполняю RecyclerView.scrollToPosition(14) то вижу следующую картину (скролл останавливается примерно на 13 позиции, хотя вручную я могу дотянуть его до самого низа):
Возможно, это как-то связано с родителем RecyclerView (в одном случае - это активити, во втором - диалог). Такое впечатление, что RecyclerView "заезжает" под кнопки OK и CANCEL (пробовал и без кнопок сделать диалог, все-равно немного смещается вниз, такое впечатление, что до низа экрана телефона). Кстати, если поставить для RecyclerView фиксированную высоту (через recyclerView.setLayoutParams(layoutParams)), то проблема исчезает.
Я понимаю, что для решения проблемы можно установить высоту recyclerView вручную, но как узнать высоту диалогового окна без меню OK и CANCEL? Может кто-то сталкивался с подобной проблемой?
ОБНОВЛЕНО! Все больше склоняюсь к тому, что это реально баг RecyclerView. С ListView в моем случае все нормально (при использовании setSelection(14)). Но все-равно было бы интересно услышать мысли по этому поводу... И если это действительно баг, куда написать в гугл, чтобы его поправили?
Ответ
Может кому-то будет интересно. Это был баг. Сменил версию RecyclerView на com.android.support:recyclerview-v7:25.0.0 и проблема исчезла. Ранее использовалась библиотека com.android.support:recyclerview-v7:23.4.0
Комментариев нет:
Отправить комментарий