6
votes

Comment restaurer la position de défilement TextView après la rotation de l'écran?

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.

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.

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.

Des idées?


0 commentaires

3 Réponses :


1
votes

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:

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 )


1 commentaires

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.



15
votes

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:


0 commentaires

0
votes

La meilleure réponse, je me suis obtenue en cherchant. XXX

}


0 commentaires