web-dev-qa-db-fra.com

Comment utiliser Recyclerview dans Scrollview

J'essaie d'afficher des éléments de recyclage horizontal et des éléments de recyclage vertical dans un ScrollView

Scrollview n'a pas fonctionné même si j'utilise Android: fillViewport = "true"

  <ScrollView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">
    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical">
    //Horizontal Recyclerview items
    <RecyclerView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">
    </RecyclerView>
    //vertical Recyclerview items
        <RecyclerView
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"></RecyclerView>
    </LinearLayout>

</ScrollView>
13
AlgoCoder

Vous devez utiliser NestedScrollView à la place. Cependant, vous devrez peut-être écrire votre propre LayoutManager. Découvrez ceci Réponse SO pour plus de détails

12
akash93
  1. Vous devez utiliser un gestionnaire de mise en page personnalisé pour utiliser recyclerview dans une vue déroulante.

  2. Vous pouvez supprimer la vue de défilement et créer un élément d'en-tête dans la vue de recyclage verticale qui contient la vue de recyclage horizontale.

Vous ne devez pas non plus utiliser une vue de recyclage dans une vue de défilement. Alors pensez que la deuxième approche sera meilleure.

Vous pouvez également utiliser Snap-RecyclerView-Utils . Il possède un gestionnaire de disposition linéaire pour la vue de recyclage dans une vue de défilement et un adaptateur qui peut vous aider à créer un en-tête contenant votre vue de recyclage horizontale.

4
Prashant Solanki

ScrollView ne peut avoir qu'un seul enfant.
Supprimez votre RelativeLayout et réessayez.

Mis à part cela Android:layout_height dans ScrollView doit être défini sur wrap_content

De plus, je ne suis pas sûr, si cela fonctionne, car dans le Docs il est indiqué que

Vous ne devez jamais utiliser un ScrollView avec un ListView, car ListView s'occupe de son propre défilement vertical. Plus important encore, cela annule toutes les optimisations importantes de ListView pour traiter les grandes listes, car elle oblige effectivement ListView à afficher l'intégralité de sa liste d'éléments pour remplir le conteneur infini fourni par ScrollView.

Peut-être qu'un NestedScrollView fonctionne puisque c'est pour

NestedScrollView est comme ScrollView, mais il prend en charge le rôle de parent et d'enfant de défilement imbriqué sur les nouvelles et anciennes versions d'Android. Le défilement imbriqué est activé par défaut.

2
Desdroid