Maison > Java > javaDidacticiel > Comment paginer du texte dans un contrôle TextView sous Android ?

Comment paginer du texte dans un contrôle TextView sous Android ?

Barbara Streisand
Libérer: 2024-11-09 18:26:02
original
1012 Les gens l'ont consulté

How to Paginate Text within a TextView Control in Android?

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 :

  1. Parcourez les lignes de texte et vérifiez si le bas de la ligne dépasse la hauteur de la vue.
  2. Si c'est le cas, cassez une nouvelle page et calculez une nouvelle valeur de hauteur cumulée en fonction du haut de la dernière. ligne qui ne tenait pas sur la page précédente plus la hauteur de la vue.

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);
    }
});
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal