scrolling recyclerview not inside ejemplo android android-recyclerview android-nestedscrollview

android - not - scroll recyclerview



Recyclerview dentro de Nested Scrollview scroll pero no se desplaza rĂ¡pidamente como Recyclerview normal o Nested Scrollview (10)

Estoy usando RecyclerView dentro de NestedScrollView y funciona. Pero cuando uso RecyclerView dentro de LinearLayout o algo así, se desplaza a varias velocidades dependiendo del gesto. El desplazamiento escucha el gesto y si me deslizo solo un poco hacia arriba, entonces se desplaza un poco, mientras que si me deslizo hacia arriba muy rápido, entonces se desplaza muy rápido. Ahora mi problema es que RecyclerView dentro de NestedScrollView ciertamente se desplaza pero el desplazamiento rápido no funciona. Sin embargo, me deslizo hacia arriba rápido o lento, RecyclerView o NestedScrollView solo se desplazan un poco.

¿Cómo puedo hacer que mi NestedScrollView o RecyclerView dentro de esa vista de desplazamiento se desplace a varias velocidades?


De forma predeterminada, setNestedScrollingEnabled funciona solo después de API-21.

Puede usar ViewCompat.setNestedScrollingEnabled(recyclerView, false); para deshabilitar el desplazamiento anidado para antes y después de API-21 (Lollipop). Enlace a la documentación .

¡Espero que esto ayude!


Debe ajustar la vista del reciclador en cualquier diseño como LinearLayout y establecer el tamaño de RecyclerView en constante, como 800dp. Esto permitirá un desplazamiento suave y la vista del reciclador seguirá siendo una vista del reciclador durante el desplazamiento.

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="800dp" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </LinearLayout>


Después de varias iteraciones, se me ocurrió una solución.

  1. Si está utilizando RecyclerView, entonces:

    recyclerView.setNestedScrollingEnabled(false);

  2. Si está utilizando LinearLayout dentro de NestedScrollingView, tome LinearLayout dentro de una ScrollView normal y luego configure su desplazamiento en

    scrollView.setNestedScrollingEnabled(false);


Estaba trabajando en Android 16 donde no era posible usar el método setNestedSCrollEnabled,

Lo que termino haciendo para evitar que RecyclerView maneje Scrolls.

Al igual que en LinerLayoutManager, hice canScrollHorizontally, canScrollVertically para devolver false por defecto.

myRecyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false){ @Override public boolean canScrollHorizontally() { return false; } @Override public boolean canScrollVertically() { return false; } });


Esto es WAI El NestedScrollView mide a sus hijos con la especificación "Sin especificar". El niño también puede crecer tanto como quiera.

Esto esencialmente equivale a la altura de NSV y RV. Entonces, en lo que respecta a la RV, cree que se muestra completamente.

Envuelva su RV con un LL y dele altura a su RV. El LL no establecería la especificación de la medida como NO ESPECIFICADA, por lo que el RV se desplazaría correctamente dentro de la altura establecida de cualquier DP que proporcione.

El único inconveniente de este método es que no podrá hacer una coincidencia de padres en su RV.


Puede usar ScrollView con la clase ExtendRecyclerView que anula el método onMeasure. ¡Funciona para mi!

@Override protected void onMeasure(int widthSpec, int heightSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthSpec, expandSpec); }


También me encontré con este problema. Y actualizar a 26.1.0 arreglarlo.


tratar

recyclerView.setNestedScrollingEnabled(false);


android: overScrollMode = "nunca

recyclerView.setNestedScrollingEnabled(false);


<android.support.v4.widget.NestedScrollView android:id="@+id/nestedScrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:overScrollMode="never"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </android.support.v4.widget.NestedScrollView>

A veces será útil, pero no es aconsejable para todas las veces, ya que deshabilita la función de reciclaje de la vista en la vista del recylcer.

Alternativas:

Pruebe CollapsiveToolbarLayout con la vista Recycler. poner otras vistas en el diseño desplegable de la barra de peaje.