2010-07-11 19 views
6

Pour commencer, je suis un développeur C++/Qt qui se lance dans le développement Android/Java, donc, ne supposez pas que je sais quoi que ce soit. :) Donc, j'ai une application avec un TextView contenu dans un ScrollView. Le texte contenu dans TextView est le résultat d'une requête Web de mon application de serveur Web. Selon la requête, le texte peut être assez long. Je veux implémenter une fonction de recherche sur le texte où l'utilisateur saisit une chaîne de texte à rechercher, et si la chaîne de texte est trouvée, ScrollView fera défiler le TextView pour s'assurer que la sous-chaîne est visible et que le texte soit surligné. Je pense que je sais comment mettre en évidence la sous-chaîne de texte, je sais comment dire à ScrollView pour faire défiler vers un numéro de ligne spécifique dans le TextView, mais pour la vie de moi, je ne peux pas comprendre comment trouver le numéro de ligne à faites défiler jusqu'à pour garantir que ma sous-chaîne est visible. C'est-à-dire, je veux interroger la vue de texte pour me donner le numéro de ligne que la sous-chaîne se produit d'abord. Finalement, je veux également implémenter une recherche suivante qui va à l'occurrence suivante de la sous-chaîne. Un peu comme la fonctionnalité Rechercher dans Firefox. Toute aide est grandement appréciée. Merci d'avance.Faire défiler TextView dans un ScrollView vers une sous-chaîne de texte spécifique

Répondre

8

Vous devez rechercher vous-même la position de la sous-chaîne dans le texte, par ex. avec String.indexOf(). Une fois que vous connaissez cette position, vous pouvez rechercher la ligne correcte dans le TextView en utilisant la fonction Layout.getLineForOffset():

int offset=myString.indexOf("search string"); 
int line = myTextView.getLayout().getLineForOffset(offset);