Le ScrollView À L'Intérieur De ScrollView
Je Sais que les gens de Google ont demandé de ne pas mettre de Défilement de vue à l'intérieur d'un autre Défilement de vue mais il n'existe aucune déclaration officielle de leur ordonnant de ne pas le faire?
- Merci pour vos réponses mais c'est une exigence dans l'application que je suis en train de travailler... 🙁 ... Essayé charges de trucs de remplacer les événements tactiles à la création d'une coutume de défilement de la vue, mais aucune ne semble fonctionner. Besoin d'une Documentation officielle pour que je puisse l'expliquer à mes supérieurs.
- blindstuff avez-vous vérifié un iPhone?, lorsque vous avez par exemple un ListView, à l'intérieur d'un Défilement vous pouvez faire défiler les deux en fonction de l'accent, ou de la position...
- êtes-vous sûr qu'il y est un autre ScrollView derrière la ListView? La liste est capable de faire défiler par lui-même
- stackoverflow.com/questions/4490821/...
Vous devez vous connecter pour publier un commentaire.
Est-ce assez proche?
http://developer.android.com/reference/android/widget/HorizontalScrollView.html
Mise à JOUR:
Car vous pourriez être obligé d'utiliser un deux dimensions scrollview, vous pouvez envisager d'utiliser ce:
Internet archive de blog.gorges.nous/2010/06/android-deux dimensions-le scrollview/
Je n'ai pas l'habitude de cela, mais il peut être une approche raisonnable.
Essayer celui-ci
Remarque: Ici
parentScrollView
signifie Externe ScrollView EtchildScrollView
signifie Innner ScrollViewAtul Bhardwaj la réponse ci-dessus est la façon correcte de le faire. Mais dans le cas où quelqu'un a besoin de l'appliquer à un ScrollView où vous avez moins de contrôle de la société mère, je pense que c'est assez souple et juste la façon dont il est censé fonctionner:
Quoi la fonction est d'ajouter une touche auditeur à
myScroll
qui désactive le parent tactile de l'intercepter lorsqu'une touche commence à l'enfant, et permet ensuite de revenir lorsque le contact se termine effectivement. Vous n'avez pas besoin d'une référence à la mèreScrollView
et il n'a pas à être le parent immédiat... il voyage à la liste d'affichage jusqu'à ce qu'il trouve.Meilleur des deux mondes, à mon avis.
v. getParent() = parent scrollView.
Voici une solution possible. Lorsque, arrivé à la fin d'un enfant ScrollView il passe le contrôle à la mère ScrollView pour les faire défiler. Il fonctionne avec le ScrollView et ListView à l'intérieur d'un ScrollView.
Étape 1 - définir le parent OnTouchListener
Étape 2 - définir les enfants OnTouchListener (ScrollView ou ListView)
Étape 3 - ici sont les méthodes magiques pour le bon fonctionnement
Je pense qu'il est si je ne peux pas l'air de trouver ça dans mes notes. Je sais que j'ai trouvé une telle déclaration lors de la tentative d'avoir un défilement de l'affichage dans une liste d'activité. Je pense qu'il est en fait un focus logique "bug" dans la façon dont l'INTERFACE utilisateur Android système de traite avec imbriqué scrollables qui devrait probablement être mieux détectés et communiquées au développeur. Mais mon avis est...
En fin de compte, il est préférable de considérer une seule défilement de la vue pour le bien de l'utilisateur de toute façon. C'est comme avoir des barres de défilement à l'intérieur des barres de défilement sur une page HTML; il peut être légal, mais son une terrible expérience de l'utilisateur.
J'ai trouvé une très bonne solution. Veuillez utiliser ce code.
Ce sera sûrement travail. Veuillez s'il vous plaît laissez-moi savoir si vous ne travaillez pas.
En fait, il y a une déclaration officielle à ce sujet, sur une très vieille vidéo appelé "le monde de la ListView". Ils disent de ne pas mettre d'défilement de vue à l'intérieur d'un autre (quand les deux sont dans la même direction).
Cependant, maintenant, nous avons un nouveau point de vue qui permet à la fois de points de vue pour faire défiler à la même époque, sans doute pour montrer un effet intéressant:
https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html
Je n'ai pas trouvé d'exemple pour cela, donc ce que j'ai écrit est juste une supposition de ce qu'il fait et ce qu'il utilisé pour.
Le soutien Android v4 bibliothèque dispose d'une classe appelée NestedScrollView.
Essayer Imbriquée De Défilement De La Vue: http://ivankocijan.xyz/android-nestedscrollview/
Vous pouvez mettre un ScrollView à l'intérieur d'une ScrollView. Juste étendre l'enfant ScrollView pour remplacer la méthode onTouchEvent. Comme
Si quelqu'un est à la recherche d'une réponse à cette question, j'ai eu un peu différente de la mise en œuvre. J'ai étendu la ScrollView classe et mis en œuvre onTouchListener de l'enfant, et de le poser à soi-même dans le constructeur.
Dans le onTouch rappel, si le mouvement de l'objet événement est venu avec une valeur de pointeur comptent comme 2, je retourne true, sinon false. De cette façon, si deux doigts ont été en mouvement à l'écran, il la considère comme une pincée de zoom, le contraire serait de le considérer comme normal de défilement. Je ne demande pas de parent touchez désactiver etc.
Ce n'est pas seulement que Google dit de ses mauvaises pratiques, c'est juste ne fait pas beaucoup de sens. Supose que vous avez deux verticale de défilement des vues imbriquées les unes dans les autres. Lorsque vous déplacez votre doigt sur le défilement de points de vue, qui est celui que vous souhaitez déplacer, à l'intérieur ou à l'extérieur?
Vous devriez revoir votre conception de l'INTERFACE utilisateur à quelque chose qui ne nécessite pas de cela, il y a plusieurs façons de faire une grande INTERFACE utilisateur et de toujours garder très simple.