Android — Recyclerview не начинается с вершины

#android #kotlin #android-recyclerview

#Android #kotlin #android-recyclerview

Вопрос:

Я уже видел подобную проблему и пробовал всевозможные решения, вот что у меня получилось:

     layoutManagerMemes = LinearLayoutManager(
        this@MainActivity,
        LinearLayoutManager.VERTICAL,
        false
    )

    recyclerViewMemes.setHasFixedSize(false)
    recyclerViewMemes.adapter = adapterMemes
    recyclerViewMemes.layoutManager = layoutManagerMemes

    recyclerViewMemes.scrollToPosition(0)
 

XML-файл:

     <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#000000"
        android:orientation="vertical">
    
    
        <LinearLayout
            android:id="@ id/linearLayout4"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:orientation="vertical"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">
    
    
            <androidx.appcompat.widget.Toolbar
                android:id="@ id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:popupTheme="@style/AppTheme.NoActionBar">
            </androidx.appcompat.widget.Toolbar>
    
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    
                <androidx.recyclerview.widget.RecyclerView
                    android:id="@ id/recyclerViewMemes"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent" />
            </RelativeLayout>

    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>
 

Может ли проблема быть в изображениях, которые загружаются после установки RecyclerView?

Игнорируйте это: Stackoverflow требует дополнительного текста, введите каждый элемент в новой строке, выберите количество групп в настройках и нажмите кнопку, чтобы сгенерировать рандомизированный список. Не нравится первая команда? Просто нажимайте еще раз, пока не выполните

Комментарии:

1. проблема, похоже, в вашем макете элемента . Посмотрите, не занимают ли ваши элементы всю высоту RecyclerView .

2. @ADM нет, это не так, и высота установлена на wrap_content

3. Попробуйте использовать recyclerViewMemes.scrollToPositionWithOffset(0, 0); вместо recyclerViewMemes.scrollToPosition(0)

4. Я получил неразрешенную ссылку для scrollToPositionWithOffset, поэтому я попробовал (recyclerViewMemes. LayoutManager как LinearLayoutManager).scrollToPositionWithOffset(0, 0), но все еще не работает

Ответ №1:

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