Проблема при вызове ScrollToPosition в адаптере recyclerview отсутствует макетAndroid

Форум для тех, кто программирует под Android
Anonymous
Проблема при вызове ScrollToPosition в адаптере recyclerview отсутствует макет

Сообщение Anonymous »

У меня есть RecyclerView, который содержит изображение и кнопку при запуске приложения, мне нужно перейти на определенную страницу, поэтому я использовал менеджер.scrollToPosition(pageId);
при использовании ScrollToPosition изображения не помещаются на весь экран, и отображается половина следующего изображения, но такое поведение происходит только тогда, когда я использую ScrollToPosition, но если я использую SmoothScrollToPosition, все работает нормально, и размеры изображений изменяются, чтобы заполнить весь экран, и только отображается один элемент.
Если я вручную прокручиваю элемент до элемента, все работает отлично? Я не могу использовать SmoothScrollToPosition для прокрутки до страницы номер 300, это займет вечность и выглядит очень некрасиво.
Я прикрепил изображение, чтобы показать ожидаемое поведение и проблему:
Ожидаемое поведение:
Изображение
Проблема при использовании ScrollToPosition:
[img]https://i.stack .imgur.com/SRE3G.jpg[/img]

Я попытался исправить это с помощью snapHelper и с помощью CalculDistanceToFinalSnap для прокрутки, чтобы исправить проблему и разместить изображение сверху без дополнительного пространства. но на разных телефонах поведение у меня разное.
Вот мой код для перехода на страницу:

Код: Выделить всё

    public void goToPage(int pageId)
{
try {
Log.d(TAG,"goToPage(String pageId) : go to page:"+pageId);
if(pageId=0)
{
//   imageRecycleView.smoothScrollToPosition(pageId);
LinearLayoutManager manager=(LinearLayoutManager) imageRecycleView.getLayoutManager();

//manager.scrollToPositionWithOffset(page,0);
manager.scrollToPosition(pageId);
new Thread(()->{}).start();
imageRecycleView.postDelayed(() -> {
View view = manager.findViewByPosition(pageId);
if (view == null) {
return;
}

int[] snapDistance = snapHelper.calculateDistanceToFinalSnap(manager, view);
if (snapDistance[0] != 0 || snapDistance[1] != 0)
{
Log.d(TAG,"X:"+snapDistance[0]+"Y:"+snapDistance[1]+" toolbarsize:"+getToolBarHeight());
if(snapDistance[1]

Подробнее здесь: [url]https://stackoverflow.com/questions/78177275/issue-when-calling-scrolltoposition-in-recycleview-adapter-is-missing-up-the-lay[/url]

Вернуться в «Android»