RecyclerView qui ne se défile pas et affiche tous les éléments
J'ai un RecyclerView (et quelques autres points de vue) dans un ScrollView. Actuellement, le RecyclerView est aménagé comme très petit (il montre 2 articles sur 5 qu'il contient) et il défile de façon indépendante de la ScrollView, qui n'est évidemment pas une grande EXPÉRIENCE. Je voudrais obtenir le RecyclerView à ne pas faire défiler et de prolonger ainsi que tous ses éléments sont visibles.
(Je sais que c'est stupide d'utiliser un RecyclerView dans ce cas. Je ne fais que parce que quelque part d'autre dans l'application, j'ai besoin d'un normal RecyclerView avec défilement etc. mais le même type de contenu, et je ne veux pas de code en double).
Le ScrollView n'est pas construit pour la manipulation de imbriquée de défilement. Avez-vous vérifié
Avez-vous gérer pour afficher tous les éléments à la fois dans un "NonScrollRecyclerView"? Pour une raison quelconque, mon recyclerview ne semble pas recalculer sa hauteur après l'ajout de plus de 3 éléments
Face à un problème similaire. Vous avez trouvé une solution? @JeffersonTavares? J'ai l'aide de wrap_content et imbriqués de défilement désactivé.
NestedScrollView
Avez-vous gérer pour afficher tous les éléments à la fois dans un "NonScrollRecyclerView"? Pour une raison quelconque, mon recyclerview ne semble pas recalculer sa hauteur après l'ajout de plus de 3 éléments
Face à un problème similaire. Vous avez trouvé une solution? @JeffersonTavares? J'ai l'aide de wrap_content et imbriqués de défilement désactivé.
OriginalL'auteur pstobiecki | 2016-07-04
Vous devez vous connecter pour publier un commentaire.
C'est assez simple, il suffit de régler la
RecyclerView
hauteur dewrap_content
.Vous pouvez également bénéficier de la désactivation de imbriquée de défilement sur le recycleur vue, comme suit:
RecyclerView
hauteur de définir àwrap_content
. Le problème que j'ai été confronté à été connecté avec une drôle de la combinaison de l'extraction de vue avec Picasso l'asynchronicité et des vues d'entrer ou de sortir de la zone visible. Et c'est un sujet pour un tout distinct de questions/réponses.Vous avez oublié de mentionner que vous devez utiliser NestedScrollView au lieu de le ScrollView. J'ai écrit à ce sujet ci-dessous.
En faisant cette approche n'êtes-vous pas de perdre le recycleur vue dans le recyclage de la vue et de juste faire une grande liste avec déjà tous les points de vue sur elle dans un grand rouleau de vue? Si vous essayez de charger un grand nombre d'éléments dans ce recycleur vue d'être "à la traîne".
oui, c'est le point de wrap_content sur RecyclerView. Il va se lier tous les éléments. Personnellement, je considère que c'est un bug RecyclerView devrait recyclage lorsque l'élément est à l'écran, non seulement lorsque l'élément est hors de ses limites. Mais le bug que j'ai déposé a été ignorée. Donc, en ce moment, vous devriez probablement utiliser wrap_content uniquement pour les petits jeux de données, ou d'utiliser un bouton pour charger plus d'articles.
Ouais, j'ai eu ce problème, pour la gérer, j'ai calculer le recyclerview hauteur manuellement comme le nestedscrollview est en train de défiler. Ne pas faire tout à la traîne en agissant de la sorte, et est assez rapide.
OriginalL'auteur natario
La solution de setNestedScrollingEnabled(faux) n'est pas aussi complet qu'il le devrait: vous devez utiliser NestedScrollView au lieu de ScrollViewfocusableInTouchMode="true" pour l'enfant de la NestedScrollView .
Si vous insistez sur l'utilisation de la ScrollView, vous devez également définir minHeight à la RecyclerView, et aussi de mettre overScrollMode="jamais" . Dans ce cas, il n'est toujours pas une bonne solution car la minHeight pourrait ne pas être suffisante dans certains cas
D'autres solutions de rechange que vous devriez considérer:
Remplacer la ScrollView&RecyclerView avec un seul RecyclerView, qui a des points de vue avec d'autres type de vue pour ce que vous avez eu dans la ScrollView
Utilisation GridLayout ou d'une autre mise en page à la place.
recyclerView
à l'intérieur descrollView
affecte les performances ?Si vous implémentez bien, il ne devrait pas.
"La solution de setNestedScrollingEnabled(faux) n'est pas aussi complet qu'il le devrait: vous devez utiliser NestedScrollView" C'est la seule solution qui a fonctionné pour moi. Merci
OriginalL'auteur android developer
C'est peut-être pas tout à fait claire à première vue de quoi faire avec toutes ces réponses.
Je viens d'essayer, et le travail est:
Pas besoin de changer quoi que ce soit par programmation.
OriginalL'auteur Valentina Konyukhova
Aussi essayer de jouer avec:
android:overScrollMode="never"
est une belle addition car il cache le plus de grilles de défilementOriginalL'auteur Atetc
ci-dessous le scrollview utiliser pour désactiver le défilement sur l'écran tous les éléments de votre mise en page. Quelque chose comme cela peut fonctionner:
utiliser comme de cette façon:
OriginalL'auteur Pankaj Talaviya
Un moyen facile est d'utiliser votre Adaptateur Personnalisé, à l'intérieur de la
onBindViewHolder
méthode de cette ligne:holder.setIsRecyclable(false);
OriginalL'auteur Guillermo Gonzalez