Проблема при вызове 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]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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