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:
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!