La solución definitiva para el problema de congelación deslizante NestedScrollView anidado RecyclerView de Android

Si es el siguiente diseño de página: NestedScrollView nested RecyclerView
inserte la descripción de la imagen aquí
A medida que se carga el recyclerVIEW, cuantos más elementos haya, encontrará que el deslizamiento está atascado; hay dos soluciones generales:

Solución 1: cancelar el deslizamiento de recyclerVIEW

	mRecyclerView.setNestedScrollingEnabled(false);

Esta solución puede resolver la mayoría de los problemas. Pero si hay una imagen cargada en el artículo. Pero podría no funcionar.
Puedes probar la opción dos;

Solución 2: Use el CoordinadorLayout + AppBarLayout para resolver

Es decir, use AppBarLayout para ajustar las vistas que deben deslizarse fuera de la lista. De esta manera, el enlace se puede realizar; tenga en cuenta que no debe configurarse en este momento

mRecyclerView.setNestedScrollingEnabled(false);

El código central es el siguiente:

 <androidx.coordinatorlayout.widget.CoordinatorLayout
            android:id="@+id/layout_data"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:overScrollMode="never"
            android:scrollbars="none">

            <com.google.android.material.appbar.AppBarLayout
                android:id="@+id/mAppBarLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@null"
                android:fadingEdge="none"
                app:elevation="0dp">

                <androidx.core.widget.NestedScrollView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:overScrollMode="never"
                    android:scrollbars="none"
                    app:layout_scrollFlags="scroll|exitUntilCollapsed">

                    <ImageView
                        android:id="@+id/iv_top"
                        android:layout_width="match_parent"
                        android:layout_height="76dp"
                        android:scaleType="fitXY"
                        android:src="@mipmap/ic_estimate_title" />


                </androidx.core.widget.NestedScrollView>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="0dp"/>

            </com.google.android.material.appbar.AppBarLayout>

            <RelativeLayout
                android:id="@+id/relativeLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_behavior="@string/appbar_scrolling_view_behavior">

                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/recyclerView"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_marginLeft="-8dp"
                    android:layout_marginRight="-8dp"
                    android:background="@color/color_bg"
                    android:divider="@color/trans"
                    android:horizontalSpacing="0dp"
                    android:listSelector="@color/trans"
                    android:overScrollMode="never"
                    android:scrollbars="none"
                    android:verticalSpacing="12dp" />

            </RelativeLayout>


        </androidx.coordinatorlayout.widget.CoordinatorLayout>

¡Ya terminaste!

Supongo que te gusta

Origin blog.csdn.net/mingtiannihao0522/article/details/129322330
Recomendado
Clasificación