J'ai un ListView avec un texte d'édition et un bouton en dessous. Lorsque je clique sur un élément de listView, le clavier apparaît et augmente le texte d'édition et le bouton. Je veux que la liste défile jusqu'à l'élément sélectionné. Une idée? MerciListView faites défiler jusqu'à l'élément sélectionné
Répondre
Configurez un écouteur sur votre élément de liste en cours de clic, puis utilisez View.getTop()
ou View.getBottom()
lorsque vous cliquez dessus pour obtenir sa position dans le parent. Vous pouvez ensuite utiliser ListView.scrollTo(x, y)
pour faire défiler jusqu'à l'élément de liste.
Cela ne fonctionne pas pour moi. Si j'implémente votre exemple, le listView défile mais l'élément sélectionné n'est pas centré. – Anita
@Anita: Vous n'avez rien dit au sujet du centrage ... le centrage ne prend qu'une petite modification. Il suffit d'ajouter ou de réduire à la valeur y proportionnellement à la hauteur de l'écran. – Doge
Pas besoin de faire ça. –
Vous pouvez utiliser la méthode setSelection(int position)
de ListView pour faire défiler jusqu'à une ligne.
Cela n'a pas fonctionné pour moi. J'ai utilisé smoothScrollToPostion (position) à http://developer.android.com/reference/android/widget/ListView.html#smoothScrollToPosition(int). Note importante: J'ai dû l'appeler après que notifyDataSetChanged() a été appelé sur l'adaptateur. – SilentNot
Notez que celui-ci vous amène à la position, mais comme dans l'autre réponse, smoothScrollToPosition y fait défiler. Les deux fonctionnent si vous voulez que l'utilisateur soit montré quelque chose donc c'est une question de comment vous voulez qu'il regarde. –
comment faire défiler la liste vers le haut quand un seul élément existe? –
Vous devez utiliser transcript mode
:
getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
Vous pouvez utiliser smoothScrollToPosition(int position)
de ListView pour faire défiler jusqu'à un emplacement particulier dans la liste.
à cause de ce bug: https://code.google.com/p/android/issues/detail?id=36062, c'est en fait une meilleure solution de contournement si vous voulez un défilement fluide: http://stackoverflow.com/questions/ 14479078/smoothscrolltopositionfromtop-is-not-always-like-it-should/20997828 # 20997828 – nommer
Ce bug, tel que décrit, semble spécifique à smoothScrollToPositionFromTop. Pas sûr qu'il affecte smoothScrollToPosition ... quelqu'un sait-il? –
Ne sait pas, mais à l'heure, mon 'smoothScrollToPosition()' ne semble pas fonctionner, alors que 'setSelection()' fonctionne; mais avec un crétin. – Darpan
Yo peut chercher
listView.setSelectionFromTop (position, distanceFromHeader);
Il positionnera le point à la position, les pixels spécifiés en dessous du haut de listview
Je dois faire défiler une autre vue simultanément tout en faisant défiler lisview. L'utilisation de setSelectionFromTop sur listview pour le défilement bloque le thread UI qui ralentit le défilement d'une autre vue. Pouvez-vous donner une suggestion sur la façon de le faire? – VijayRaj
Pour un défilement direct:
getListView().setSelection(11);
Pour un rouleau lisse:
getListView().smoothScrollToPosition(11);
pour faire défiler vers le haut
getListView().setSelectionAfterHeaderView();
Remarque
essayer de l'appeler en poste parce que quelque temps listview est pas encore créé pendant que vous l'appelant est la méthode
getListView().postDelayed(new Runnable() {
@Override
public void run() {
lst.setSelection(15);
}
},100L);
aide la durée donne une meilleure expérience utilisateur. Utilisez ceci, avec la durée ajoutée. Fait défiler l'élément en position doucement vers le haut de la liste.
int duration = 500; //miliseconds
int offset = 0; //fromListTop
listview.smoothScrollToPositionFromTop(position,offset,duration);
- durée de descrease pour faire défiler plus rapidement
Vous pouvez utiliser
smoothScrollToPosition(position)
augmenter juste la position de l'élément avec 1, et vous obtiendrez la vue de l'article.
getListView().smoothScrollToPosition(position + 1);
- 1. jQuery: Faites défiler jusqu'à
- 2. Div Faites défiler sur MouseOver
- 3. WPF ListView Afficher l'élément sélectionné
- 4. listview Elément sélectionné
- 5. Affichage de l'élément sélectionné/sélectionné dans ListView dans WinForms
- 6. Faites défiler jusqu'à l'élément sélectionné dans le composant Flex 4 Spark List
- 7. javascript faites défiler vers le haut
- 8. iPhone - faites défiler UITableView jusqu'à l'index
- 9. Faites défiler Google Maps dans iframe
- 10. WPF ListBox - Faites défiler toujours au-dessus
- 11. Barres de défilement Autohide lorsque vous ne faites pas défiler dans un ListView
- 12. Supprimer l'élément sélectionné de ListView
- 13. WPF ListView élément sélectionné problème
- 14. ListView [VirtualMode] modifier l'index sélectionné
- 15. faire quelque chose lorsque vous faites défiler vers le haut et quelque chose d'autre lorsque vous faites défiler dans jquery
- 16. Je veux faire défiler deux ListView dans une disposition
- 17. jQuery cliquez et glissez/faites défiler la fenêtre: mouvement irrégulier
- 18. C# Faites défiler le texte à l'aide de DrawString
- 19. Onglets jQueryUI - Ne faites défiler que le contenu
- 20. Touch Faites défiler sur View Flipper dans Android?
- 21. jQuery: faites défiler la fenêtre puis addClass() - comment appeler
- 22. Javascript: faites défiler le navigateur vers le haut?
- 23. Faites défiler la vue pour le textView dans android
- 24. répéteur ASP.net, faites défiler 3 à la fois
- 25. Faites défiler pour les composants désactivés dans C#
- 26. Faites défiler jusqu'à la sélection dans une grille ExtJS
- 27. Faites défiler par programme la fenêtre Windows Mobile
- 28. Faites défiler pour charger un autre contenu dans un UIView
- 29. Faites défiler jusqu'à un élément particulier j'ai w/jQuery
- 30. Faites défiler si sur le côté droit (jQuery)
voir ma réponse ici, http://stackoverflow.com/a/29345217/1881527 –
double possible de [faire défiler Programmatically à une position spécifique dans un ListView Android] (http: // stackoverflow.com/questions/7561353/programatically-scroll-to-a-specific-position-in-an-android-listview) –