Gibt es eine Möglichkeit, die sichtbare Zeilenzahl oder den Bereich eines TextViews abzurufen?

Ich habe eine Vollbild-TextView mit einer langen gespannt, die das Scrollen erfordert. Die TextView's getLineCount () gibt mir die Gesamtzahl der Zeilen für den gesamten Textblock verwendet, aber ich würde gerne wissen, wie viele Textzeilen derzeit auf dem Bildschirm sichtbar sind.

Oder besser noch, gibt es einen Weg, um herauszufinden, die Palette von Linien derzeit auf dem Bildschirm sichtbar? Zum Beispiel, wie die Ansicht scrollt, kann ich sagen, dass Zeilen 20-60 sind derzeit sichtbar?

  • Wann sollte ich die Berechtigung ACCESS_COARSE_LOCATION verwenden?
  • MJPEG Verbesserungen
  • Machen Sie Android App auf gemeinsame Links zu hören
  • Welche Themenattribute muss ich überschreiben, um die blaue Highlight-Farbe meiner Dialoge zu ändern?
  • Unter welchen Bedingungen sind In-App-Abrechnung Version 3 Server-Änderungen auf Client-Geräten verfügbar?
  • Umschalten von Kontrollkästchen in MultiChoice AlertDialog in Android
  • Der Aktivitätsfehler kann nicht wieder aufgenommen werden
  • Schaltflächen des Alarmdialogs werden abgeschnitten
  • Implementierung von ListView im Home-Screen-Widget
  • Android: textColor der deaktivierten Schaltfläche im Selektor nicht angezeigt?
  • ListView wie in universal image loader Beispiel app
  • So deaktivieren Sie hinter View click event Framelayout
  • 2 Solutions collect form web for “Gibt es eine Möglichkeit, die sichtbare Zeilenzahl oder den Bereich eines TextViews abzurufen?”

    Ich habe die Antwort herausgefunden:

    int height = myTextView.getHeight(); int scrollY = myTextView.getScrollY(); Layout layout = myTextView.getLayout(); int firstVisibleLineNumber = layout.getLineForVertical(scrollY); int lastVisibleLineNumber = layout.getLineForVertical(scrollY+height); 

    Um sie zu arbeiten, sollten Sie den Code schreiben, der von @Robert auf diese Weise veröffentlicht wurde:

     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); } }); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.