Heim  >  Artikel  >  Java  >  Wie paginiere ich Text in einem TextView-Steuerelement in Android?

Wie paginiere ich Text in einem TextView-Steuerelement in Android?

Barbara Streisand
Barbara StreisandOriginal
2024-11-09 18:26:02970Durchsuche

How to Paginate Text within a TextView Control in Android?

Text in Android paginieren

Problem:

Text in einem TextView-Steuerelement in Android paginieren erfordert die Festlegung, wann und wie der Text in Seiten aufgeteilt werden soll. Dies kann eine Herausforderung sein, da die Zeilenumbruch- und Seitenumbruchalgorithmen von TextView nicht ohne weiteres zugänglich sind, was es schwierig macht, zu erkennen, wo der Text auf der tatsächlichen Anzeige endet.

Lösung:

Durch die Überwachung des sichtbaren Textbereichs mit dem ViewTreeObserver ist es möglich, die letzte Zeile zu verfolgen, die vollständig in die Höhe der Ansicht passt. Dies ermöglicht die Erstellung von Seiten basierend auf der kumulativen Höhe der Zeilen und stellt sicher, dass Seiten umgebrochen werden, wenn eine Zeile gefunden wird, die den verfügbaren vertikalen Raum überschreitet.

Algorithmus:

  1. Durchlaufen Sie die Textzeilen und prüfen Sie, ob der untere Teil der Zeile die Höhe der Ansicht überschreitet.
  2. Wenn ja, unterbrechen Sie Erstellen Sie eine neue Seite und berechnen Sie einen neuen kumulativen Höhenwert basierend auf dem oberen Rand der letzten Zeile, die nicht auf die vorherige Seite passte, plus der Höhe der Ansicht.

Implementierung:

Um diesen Algorithmus zu implementieren, verwenden Sie Folgendes Code:

// 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);
    }
});

Hinweis:

Diese Lösung paginiert Text effizient und berücksichtigt dabei die Zeilenhöhe und den Zeichenabstand. Es verarbeitet auch Sonderzeichen und dynamische Textänderungen.

Das obige ist der detaillierte Inhalt vonWie paginiere ich Text in einem TextView-Steuerelement in Android?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn