J'utilise RecyclerView
à l'intérieur de NestedScrollView
et cela fonctionne. Mais lorsque j'utilise RecyclerView
à l'intérieur de LinearLayout
ou quelque chose du genre, le défilement s'effectue à une vitesse variable en fonction du geste. Le défilement écoute le geste et si je glisse un peu vers le haut, alors il défile un peu tandis que si je glisse très vite, alors il défile très vite. Maintenant, mon problème est que RecyclerView
à l'intérieur de NestedScrollView
défile certainement mais le défilement rapide ne fonctionne pas. Cependant, je glisse rapidement ou lentement, RecyclerView
ou NestedScrollView
défile seulement un peu.
Comment puis-je faire défiler mon NestedScrollView
ou RecyclerView
à l'intérieur de cette vue de défilement à différentes vitesses?
essayer
recyclerView.setNestedScrollingEnabled(false);
Par défaut, setNestedScrollingEnabled
ne fonctionne qu'après API-21.
Vous pouvez utiliser ViewCompat.setNestedScrollingEnabled(recyclerView, false);
pour désactiver le défilement imbriqué avant et après API-21 (Lollipop). Lien vers la documentation .
J'espère que cette aide!
Je travaillais sur Android 16 où l'utilisation de la méthode setNestedSCrollEnabled n'était pas possible,
Ce que je finis par faire pour empêcher RecyclerView de gérer les Scrolls.
Comme dans LinerLayoutManager, j'ai créé canScrollHorizontally, canScrollVertically pour retourner false par défaut.
myRecyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false){
@Override
public boolean canScrollHorizontally() {
return false;
}
@Override
public boolean canScrollVertically() {
return false;
}
});
Après plusieurs itérations, j'ai trouvé une solution.
Si vous utilisez RecyclerView, alors:
recyclerView.setNestedScrollingEnabled(false);
Si vous utilisez LinearLayout dans NestedScrollingView, insérez LinearLayout dans un ScrollView normal, puis définissez son défilement sur
scrollView.setNestedScrollingEnabled(false);
Android: overScrollMode = "jamais
<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>
recyclerView.setNestedScrollingEnabled(false);
Sera utile parfois.Mais ce n'est pas conseillé pour toutes les fois.parce qu'il désactive la fonctionnalité de recyclage de la vue dans la vue recyclage.
Alternatives:
Essayez CollapsiveToolbarLayout avec la vue Recycler. mettre d'autres vues dans la disposition collapsiveTollbar.
J'ai aussi rencontré ce problème. Et mettre à niveau vers 26.1.0
le résoudre.
Vous pouvez utiliser ScrollView avec la classe ExtendRecyclerView qui remplace la méthode onMeasure. Ça marche pour moi!
@Override
protected void onMeasure(int widthSpec, int heightSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthSpec, expandSpec);
}