RecyclerView à l'intérieur de ScrollView, certains éléments ne sont pas affichés
J'ai eu un RecyclerView dans le ScrollView comme ceci:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--other stuff-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"/>
</LinearLayout>
<!--other stuff-->
</ScrollView>
Et la RecyclerView
'élément est un RelativeLayout
, à l'intérieur de laquelle il y a un EditText
et d'autres points de vue. Le layout_height
de RelativeLayout
et EditText
est à la fois wrap_content
. L'utilisateur peut entrer dans le EditText
sans aucune limite de longueur de lignes, de sorte que chaque élément de la hauteur est différente.
Puis j'ai trouvé que getItemCount()
dans Adapter
renvoie la valeur vrai, mais onBindViewHolder()
s'appelle de la mauvaise fois(à moins qu'elle ne devrait l'être), donc pas assez d'afficher tous les éléments.
J'ai trouvé que cela n'arrivera que si j'ai écrit recyclerView.setNestedScrollingEnabled(false)
. Mais je ne peux pas supprimer cette ligne. Parce que si je l'ai fait, le RecyclerView
de ne pas les faire défiler lentement et n'est pas en harmonie avec d'autres points de vue à l'intérieur de ScrollView
et ScrollView
lui-même.
Cela se produit sur 6.0 mais pas sur 4.1.
J'ai communiqué avec Google à partir de cette page: https://code.google.com/p/android/issues/detail?id=213914 et il m'a dit c'est un bug fix pour RecyclerView
. Vous pouvez visiter cette page afin que vous puissiez comprendre la question et mon objectif de mieux(Il y a un petit exemple de projet pour montrer le problème). Je ne suis pas d'accord avec lui, même maintenant, et je veux résoudre le problème. S'il vous plaît aider, je vous remercie à l'avance.
Eh bien, ça n'aide pas.
avec android:fillViewPort="true", le changement linéaire de la hauteur de présentation de match_parent
Encore inutile.
OriginalL'auteur ywwynm | 2016-06-28
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution moi-même: remplacer
ScrollView
avecNestedScrollView
et de garderrecyclerView.setNestedScrollingEnabled(false)
. Je ne sais pas si c'est ce queNestedScrollView
est fait pour mais ça fonctionne.AVIS:
NestedScrollView
n'est pas un enfant deScrollView
mais deFrameLayout
.adjustResize
.m'a aidé aussi, merci,
setNestedScrollingEnabled(false);
est important de garder le défilement lisseVous êtes DIEU!!! 😀 Merci
u peut pls partager le code ?
Ce n'est pas une bonne solution effectivement. Ceci a pour effet que la RecyclerView ne pas recycler plus.
OriginalL'auteur ywwynm