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?

  • So installieren Sie Anwendungen programmgesteuert ohne Öffnen von Play Store (wie Google Drive)
  • Wie man die verstrichene Zeit mißt
  • Android download binäre Datei Probleme
  • CSS "float: right" Eigentum gleichwertig in LinearLayout auf Android?
  • Fügen Sie Animation zu einem ExpandableListView hinzu
  • Fehler bei der Erstellung von signierten apk
  • Wie private Daten an android calendar event anhängen
  • Android: Versuchen, Android zu verstehen: layout_weight
  • Android - Wert von HashMap erhalten
  • Fortsetzen Sie die Top-Aktivität, anstatt die Launcher-Aktivität zu starten
  • Ändern Sie EditText Hinweisfarbe bei Verwendung von TextInputLayout
  • Duplizierte Einträge in ListView
  • 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.