Dans ma mise en page Android, j'ai un TextView. Ce TextView affiche un texte plutôt important et capable de faire défiler. Maintenant, lorsque le téléphone est pivoté, la vue est détruite et créée et je dois installer () la TextView à nouveau, réinitialisant la position de défilement au début. p>
Je sais que je peux utiliser Getscrolly () et ScrollTo () pour faire défiler les positions de pixels, mais en raison de la variation de largeurs de vue, des lignes deviennent plus longues et une ligne qui était à Pixel POS 400 pourrait maintenant être à 250. Donc cela n'est pas très utile. p>
J'ai besoin d'un moyen de trouver la première ligne visible dans un TextView en Ondestroy (), puis un moyen de faire défiler TextView à cette pièce spécifique de texte après la rotation. P>
Des idées? P>
3 Réponses :
TextView peut enregistrer et restaurer son état pour vous. Si vous n'êtes pas en mesure d'utiliser cela, vous pouvez désactiver cela et appeler explicitement les méthodes: p>
http://developer.android.com/reference/andrroid/ widget / textview.savedstate.html http://developer.android.com/reference/andrroid/widget/textview.html#onsaveInstancestate () http://developer.android.com/reference /android/widget/textview.html#onrestoreInstancestate(android.os.parcelable ) P>
Même problème. TextView ne sauve que la position de pixels, pas la position du texte. Après la rotation, je dois calculer une nouvelle position de pixel de manière à ce que le même texte soit affiché comme avant.
C'est une ancienne question, mais j'ai atterri ici lors de la recherche d'une solution au même problème, voici ce que je suis arrivé. J'ai combiné des idées des réponses à ces trois questions:
J'ai essayé d'extraire uniquement le code correspondant de mon application, alors veuillez pardonner les erreurs. Notez également que si vous faites pivoter sur le paysage et le dos, cela peut ne pas se terminer dans la même position que vous avez démarrée. Par exemple, dites "Peter" est le premier mot visible en portrait. Lorsque vous faites pivoter le paysage, "Peter" est le dernier mot de sa ligne et le premier est "Larry". Lorsque vous tournez en arrière, "Larry" sera visible. P>
La meilleure réponse, je me suis obtenue en cherchant. } P> P>