У меня есть обратный вызов, который запускается после прокрутки программы до определенного элемента RecyclerView через LinearLayoutManager.smoothScrollToPosition()
. Пользователь нажимает на элемент, а правый элемент прокручивается вверху RecyclerView. Я подклассифицировал LinearLayoutManager, чтобы он всегда привязывался к вершине элемента.
Это работает в случае, если событие прокрутки запущено, но когда RecyclerView уже находится в правильном положении, я не получаю обратный вызов onScrollStateChanged
, так как прокрутки не происходит. Есть ли способ получить это событие? Как решить заранее, нужно ли прокручивать или не просматривать RecyclerView?Проверьте, нужно ли прокручивать RecyclerView
ответ
я нашел следующее решение сам:
// get the view the user selected
View view = mLayoutManager.findViewByPosition(index);
// get top offset
int offset = view.getTop();
if (offset == 0) { // the view is at the top of the scrollview
showDetailViewInternal(event);
} else {
// scrolling
}
Это не сработает, если это последний элемент в списке, так как он никогда не прокрутит весь путь до вершины. –
Надеюсь следующий код поможет
if(LinearLayoutManager.findFirstCompletelyVisibleItem() == yourDesiredPosition) {
//do your stuff
} else {
LinearLayoutManager.scrollToPositionWithOffset(yourDesiredPosition, offset);
//onScrollStateChanged would be trigger then.
}
Нет, это просто говорит мне, что элемент, который я ищу, полностью виден на экране. Это ничего не говорит о положении прокрутки. Элемент может быть видимым, но в нижней части экрана и RecyclerView будет прокручиваться. – Alf
У меня есть идея для вашего требования. Если все элементы адаптера не покрывают весь экран, в этом случае событие прокрутки не будет запущено. Попробуйте добавить прозрачный вид в макет адаптера и сделать его видимым в последнем элементе, если весь экран не будет закрыт. Дайте фиксированную высоту прозрачному виду, чтобы он вышел из экрана. – user320676
Почему это означает, что событие прокрутки не будет запущено? В любом случае я нашел лучшее решение, чем добавление прозрачных представлений в мой макет. См. Мой ответ выше. – Alf
- 1. Проверьте RecyclerView прокручивать
- 2. Проверьте, не проскальчивается ли RecyclerView для меня
- 3. Программным прокручивать RecyclerView с GridLayoutManager
- 4. Мне нужно прокручивать структуру
- 5. Проверьте, полностью ли видны элементы в RecyclerView
- 6. Recyclerview с LinearLayout не может прокручивать
- 7. как сохранить RecyclerView всегда прокручивать нижнюю часть
- 8. Проверьте, можно ли прокручивать элемент влево или вправо.
- 9. Нужно прокручивать мышью прокрутку usercontrol
- 10. Проверьте, можно ли скроллировать или прокручивать полосу прокрутки в WebBrowser
- 11. Почему прокручивать веб-страницы к началу, мне нужно прокручивать $ («HTML»)
- 12. NavigationBar не нужно прокручивать с помощью UITable
- 13. Нужно прокручивать LongListSelector по горизонтали внутри pivotItem?
- 14. Проверьте, отображается ли строка элемента recyclerview на экране или нет?
- 15. Как мы можем прокручивать родительский макет при прокрутке recyclerview android
- 16. HTML/JQuery: Расширение Textarea; Нужно прокручивать
- 17. HorizontalScrollView - нужно прокручивать по ширине изображений
- 18. AutoSize DataGrid, поэтому вам не нужно прокручивать
- 19. WPF - как автопрокрутить scrollviewer, когда нужно прокручивать?
- 20. Нужно прокручивать страницу, когда клавиатура видна
- 21. Нужно прокручивать представление таблицы, чтобы включить didSelectRowAtIndexPath
- 22. Как я могу прокручивать элементы recyclerview способом, похожим на viewpager?
- 23. Как прокручивать вверх или вниз нижнюю панель при прокрутке RecyclerView
- 24. Проверьте, какая кнопка нажата в RecyclerView?
- 25. Проверьте CheckBox в RecyclerView при его загрузке
- 26. Как плавно прокручивать до щелчка вверху списка RecyclerView?
- 27. Как прокручивать сворачивающиеся панели инструментов и RecyclerView одновременно?
- 28. RecyclerView внутри DrawerLayout в LinearLayout не прокручивать/интерактивный
- 29. Как сделать recyclerview показать весь элемент и не прокручивать
- 30. Как прокручивать (x, y) в RecyclerView внутри NestedScrollView?
вы можете проверить, если элемент (положение), вы хотите, чтобы перейти к уже на экран перед вызовом * LinearLayoutManager.smoothScrollToPosition() * – Bugdr0id
Этого недостаточно, поскольку это может быть на экране, но не в верхней части представления, и в этом случае прокрутка будет происходить в любом случае. – Alf
Как насчет layoutManager.findFirstCompletelyVisibleItemPosition() – SoroushA