Est-il une manière que je peux makle sûr un élément donné dans un android listview est entièrement visible?
J'aimerais être capable de programmation pour faire défiler jusqu'à un élément spécifique, comme lorsque j'appuie sur un bouton par exemple.
OriginalL'auteur CodeFusionMobile | 2010-01-01
ListView.setSelection()
de défilement de la liste, de sorte que l'élément souhaité est dans la fenêtre d'affichage.Cette réponse n'est pas exacte, comme CodeFusionMobile souligné. Donc j'aurais du mal à l'accepter... 🙁
OriginalL'auteur Christopher Orr
Essayer:
+1 merci pour ce!
Hmm. Il y a au moins un piège ici: en cas d'installation de la sélection avant d'aménagement a été fait, il n'y aura pas de dernière visible (=-1) et tout se casse. Vous devez vous assurer que c'est courir APRÈS la présentation est faite. Sinon il ne fonctionne pas comme prévu, mais définit la sélection tout à fait tort.
Pas de travail en cas de contrôle Listview à l'intérieur d'une boîte de Dialogue personnaliser. S'il vous plaît suggérer.
OriginalL'auteur jauseg
Je crois que ce que vous cherchez est ListView.setSelectionFromTop() (même si je suis un peu en retard à la fête).
OriginalL'auteur Jonas Rabbe
Récemment, j'ai rencontré le même problème, coller ma solution ici au cas où quelqu'un (j'ai essayé de faire tout le dernier élément visible visible):
Malheureusement il y a un interne de la pac pour le montant que
ListView.smoothScrollBy
de défilement. C'est parce que en interne, il permet de simuler un utilisateur fling. L'utilisation de cette méthode pour faire défiler jusqu'à 10 écrans d'articles résultats dans le défilement par seulement quelques écrans.OriginalL'auteur liuyong
J'ai une plus courte et, à mon avis, la meilleure solution pour ce faire : ListView requestChildRectangleOnScreen méthode est conçue pour cela.
La réponse ci-dessus assure que l'élément sera affiché, mais parfois, il sera affiché en partie (ie. quand il est au bas de l'écran). Le code ci-dessous s'assure que l'ensemble de l'élément sera affiché et que la vue de défilement seulement accès à la zone :
Le problème avec Yves réponse est que ce
View
n'existe pas nécessairement... si il n'est pas visible,ListView
sera très probablement avez supprimés. En effet,smoothScrollToPosition
est la bonne réponse ici.OriginalL'auteur Yves Delerm