Ich werde auf mehreren Seiten in einer Android-App ein vollständiges Textdokument anzeigen. Jede Seite enthält ein TextView-Steuerelement, das für die Anzeige von Text zuständig ist. Es enthält auch eine nächste Schaltfläche, die zuständig ist, Textview zu aktualisieren und dem Text zu folgen, der gerade in dem zuletzt angezeigten Abschnitt endete.
Das Problem ist, wie kann ich das letzte angezeigte Wort im darstellbaren Bereich von TextView finden?
Hinweis: In dieser App sollte textView nicht gescrollt werden oder Ellipsen verwenden.
Es muss auch beachtet werden, dass die Textgröße erhöht oder verringert werden kann.
Um die Situation besser zu verstehen:
Beispieltext, der angezeigt werden soll:
Dies ist ein ganzer Text. Auf der ersten Seite Es endete gerade hier und muss sein von hier gefolgt.
Und das ist die Beispieldarstellung seiner Anzeige. Die Frage ist, wie man das Wort "here" als letztes auf Seite 1 angezeigtes Wort finden kann? android textview
Schließlich habe ich einen Code entwickelt, der das zuletzt angezeigte Wort finden kann. In Anbetracht dessen, dass wir eine Textansicht mit den Eigenschaften width und height als Größe und textSize in dp als Textgröße verwenden, formatStringToFitInTextView wertet das zuletzt angezeigte Wort in der Textansicht aus und gibt es als Funktionsausgabe zurück. Im folgenden Beispiel betrachteten wir SERIF-Schriftart als TextView-Schriftart.
%Vor%Die Gesamtlogik zum Ausführen von Aktionen teilt den Eingabetext in Wörter auf und fügt Wörter einzeln in textview ein, bis die angegebene Höhe und Breite ausgefüllt ist und das zuletzt hinzugefügte Wort als letztes angezeigtes Wort zurückgegeben wird.
Hinweis: Dank Moritz habe ich das Funktionsmaß von diese Antwort .
Ich kann diese Idee jetzt nicht ausprobieren, aber lass es uns versuchen! Laut diesem Beitrag können Sie die folgende Methode, um herauszufinden, ob eine Zeichenfolge in eine Textansicht passt.
%Vor%Eine Idee: Wenn der Text immer gleich ist, können Sie die Anfangswerte für jede Textansicht manuell definieren und dann, wenn Sie die Schriftart vergrößern oder verkleinern, diese neu berechnen, Wörter entfernen oder hinzufügen.
Wenn es keine Möglichkeit gibt, die Anfangswerte manuell einzugeben, können Sie Folgendes tun:
%Vor%Sie müssten auch die Position des ersten Wortes von textView speichern. Wenn Sie also die Größe des Textes ändern, wissen Sie, wo Sie anfangen sollen!
%Vor%Und wenn es die Größe ändert, verwenden Sie es in der gleichen Methode, um den Text auf dem Bildschirm zu berechnen.
%Vor%Wenn Sie noch schneller sein möchten, können Sie auf jeder Seite nachverfolgen, wie viele Wörter Sie haben, einen Durchschnittswert erstellen und nach einigen Durchläufen immer die Schleife von dort aus anzeigen. Oder ein paar Worte vorher, um nicht iterieren zu müssen.
Ich halte das für eine vernünftige Lösung, wenn Sie nicht zu viele Seiten gleichzeitig anzeigen müssen!
Entschuldigung für Fehler im Code Ich habe nicht wo ich es jetzt versuchen soll! Irgendwelche Kommentare zu dieser Lösung? Sehr interessante Frage!