web-dev-qa-db-fra.com

Créer une RecyclerView avec défilement horizontal et vertical

Au cours des dernières semaines, j'ai appris à utiliser le RecyclerView. J'ai besoin d'implémenter une liste horizontale, c'est-à-dire qu'en tournant l'appareil en mode paysage comme ceci:

enter image description here

J'ai trouvé la meilleure solution pour cela (comment créer le déplacement horizontal de RecyclerView, ici ), mais j'ai rencontré un autre problème. L'élément RecyclerView était plus grand que la hauteur de l'appareil (en paysage, horizontal), j'ai donc besoin de créer un déplacement vertical et horizontal, simultanément.

J'ai regardé la Android Méthodes développeur pour la classe LayoutManager, mais mes compétences ne sont pas assez élevées pour comprendre la plupart des méthodes. J'ai également essayé de mettre un RecyclerView verticalement dans un autre RecyclerView horizontalement avec tout le contenu, mais j'obtiens une erreur:

IllegalStateException: RecyclerView n'a pas de LayoutManager

Pour y remédier, j'ai supprimé tous les <View ... /> éléments du fichier XML, mais cela ne donne aucun résultat.

Pour clarifier ce que je demande: est-il possible de faire défiler ma mise en page à la fois horizontalement et verticalement, et si vous pouviez expliquer comment je l'apprécierais.

18
Vicky Vicent

J'étais tellement en colère contre tous les problèmes qui avaient eu tendance avec l'application qui n'avaient pas pensé à la solution la plus simple.

Dans un RecyclerView se compose de deux fichiers XML, le principal où le RecyclerView est déclaré et un autre avec du contenu.

La solution la plus simple était d'introduire le RecyclerView dans un ScrollView. Je peux donc déplacer tous les éléments à la fois grâce à ScrollView verticalement et horizontalement. Je peux déplacer les éléments grâce à RecyclerView en mode paysage.

activity_main.xml

<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_margin="@dimen/cardIn_margin_ext">

        <Android.support.v7.widget.RecyclerView
            Android:id="@+id/recycler_view"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:scrollbarStyle="outsideInset"
            Android:scrollbars="horizontal" />

</ScrollView>
18
Vicky Vicent

La réponse acceptée n'a pas fonctionné pour moi. J'ai dû utiliser le ScrollView horizontal au lieu du ScrollView simple.

<HorizontalScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
       Android:layout_width="match_parent"
       Android:layout_height="match_parent"
       Android:layout_margin="@dimen/cardIn_margin_ext">

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/recycler_view"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:scrollbarStyle="outsideInset"
        Android:scrollbars="horizontal" />
</HorizontalScrollView >
1