Pagination de texte dans Android
Problème :
Pagination de texte dans un contrôle TextView sous Android nécessite de déterminer quand et comment diviser le texte en pages. Cela peut être difficile car les algorithmes de saut de ligne et de saut de page de TextView ne sont pas facilement accessibles, ce qui rend difficile l'identification de l'endroit où le texte se termine sur l'affichage réel.
Solution :
En surveillant la plage de texte visible à l'aide de ViewTreeObserver, il est possible de suivre la dernière ligne qui correspond entièrement à la hauteur de la vue. Cela permet de créer des pages en fonction de la hauteur cumulée des lignes, garantissant que les pages sont brisées lorsqu'une ligne dépassant l'espace vertical disponible est rencontrée.
Algorithme :
Implémentation :
Pour implémenter cet algorithme, utilisez le code suivant :
// Setup code ViewTreeObserver vto = txtViewEx.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { ViewTreeObserver obs = txtViewEx.getViewTreeObserver(); obs.removeOnGlobalLayoutListener(this); height = txtViewEx.getHeight(); scrollY = txtViewEx.getScrollY(); Layout layout = txtViewEx.getLayout(); firstVisibleLineNumber = layout.getLineForVertical(scrollY); lastVisibleLineNumber = layout.getLineForVertical(height + scrollY); } });
Remarque :
Cette solution pagine efficacement le texte tout en respectant la hauteur des lignes et l'espacement des caractères. Il gère également les caractères spéciaux et les modifications de texte dynamiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!