Désactiver le défilement dans l'enfant Recyclerview android
J'ai une mise en page se compose d'un Parent RecyclerView avec un sous Recyclerview en elle
je sais que c'est pas bon de mettre une liste dans une autre liste, mais j'ai, de sorte que je peux utiliser le sous-liste de fonctionnalités comme le glisser et glisser-déposer
Mon problème est que l'enfant Recyclerview obtenir le focus et arrêts de la mère de défilement si le point de contact est sur c'
je veux simplement si le contact était à la verticale sur l'enfant Recyclerview
le parent défiler vers le haut et vers le bas et si le contact était horizontale ou cliquez sur l'enfant Recyclerview élément de la liste de glisse à gauche et à droite.
Toute aide pour y parvenir?
source d'informationauteur Abdullah Adel Essa
Vous devez vous connecter pour publier un commentaire.
J'ai enfin trouvé une solution.
Créer Des LinearLayoutManager
Puis instancier comme ça pour le défilement vertical
Enfin définir la mise en page personnalisée en tant que gestionnaire de configuration de recycleur de vue
Alors qu'il pourrait ne pas être une bonne idée d'avoir intégré recycleur points de vue, parfois vous ne pouvez pas l'éviter. Quelque chose comme cela peut fonctionner:
Cela va désactiver le défilement de l'événement, mais pas les événements de clic. Utilisez cette classe pour "enfant" RecyclerView. Vous voulez que le PARENT recyclerview pour faire défiler, mais pas l'enfant. Eh bien, ce devrait le faire, puisque le parent va juste être la norme RecyclerView, mais l'enfant sera cette coutume, avec un peu de défilement, mais les poignées de clics. Faut peut-être désactiver en cliquant sur le parent RecyclerView.. Pas sûr que je n'ai pas testé, c'est juste un exemple...
Aussi, pour l'utiliser dans le XML (au cas où vous ne le saviez pas) faire:
Sur votre ActivityName.java, à l'intérieur de la onCreate() la méthode d'écriture:
Par tous les moyens, si vous utilisez Coordonnateur de la Mise en page, Dans le cas où vous souhaitez simplifier les choses, et vous souhaitez désactiver imbriquée de défilement.
Et de nouveau l'on applique le même principe:
Sur votre ActivityName.java, à l'intérieur de la onCreate() la méthode d'écriture:
Donc, fondamentalement, au format XML, vous devez spécifier l'application: layout_behavior
android:nestedScrollingEnabled="false"
de l'enfant RecyclerViewVous pouvez ajouter
à votre RecyclerView en XML ou
à votre RecyclerView en Java.
EDIT:-
childRecyclerView.setNestedScrollingEnabled(false);
ne fonctionnera que dans android_version>21 appareils. pour travailler dans tous les appareils d'utilisation suivantesvous pouvez utiliser setNestedScrollingEnabled(false); sur des sous-recycleur de vue qui cesse de défiler à l'intérieur de la sous recycleur de vue. Dans mon cas, le code a été
mInnerRecyclerView.setNestedScrollingEnabled(false); où mInnerRecyclerView être intérieure recyclerview
J'ai essayé beaucoup de solutions proposées et ne pouvait pas en trouver un qui a fonctionné dans mon cas. J'ai plus que 1 RecyclerView à l'intérieur d'un ScrollView à l'aide d'un GridLayoutManager. Le résultat de la suggestion ci-dessus a entraîné la ScrollView arrêt pour faire défiler à chaque fois que j'ai levé mon doigt (il n'a pas glisse vers le haut ou le bas de la vue lorsque mon doigt a été levée au cours d'une RecyclerView)
À la recherche par le biais de la RecyclerView source, à l'intérieur de la onTouchEvent il y a un appel à la mise en page manager:
Si vous remplacez ces dans une mise en page personnalisée manager, retourne false et il va arrêter le défilement. Il résout également le problème de la ScrollView serait d'arrêter le défilement brusquement.
Si vous ne voulez pas faire un affichage personnalisé, une autre option est de créer une même taille de mise en page en face de la RecyclerView, et de le rendre cliquable.
EDIT:
Mais, malheureusement, il bloque les événements pour l'élément de la liste.