12 Stimmen

Android TextView und Abrufen von Textzeilen

Ich habe eine TextView, deren Text über viele Zeilen gehen kann. Nachdem er erstellt und dynamisch gesetzt wurde, möchte ich

  1. den Text in einer bestimmten Zeile abrufen und
  2. Sie kennen die Breite und Höhe dieser Linie.

Wie kann ich das tun?

27voto

CjS Punkte 2017

Wenn ich richtig verstanden habe, lautet die Antwort auf Frage 2:

textView.getLineBounds (int line, Rect bounds)

Die Breite in Pixeln sollte sein abs(bounds.right - bounds.left) ; und die Höhe ist abs(bounds.bottom - bounds.top)

Ihre erste Frage ist etwas kniffliger, aber so etwas wie das hier sollte die gewünschte Wirkung erzielen:

Layout layout = textView.getLayout();
String text = textView.getText().toString();
int start=0;
int end;
for (int i=0; i<textView.getLineCount(); i++) {
    end = layout.getLineEnd(i);
    line[i] = text.substring(start,end);
    start = end;
}

0voto

carl Punkte 51

Zur ersten Frage:

Die zuvor ausgewählte Antwort hat bei mir nicht funktioniert, da meine Textansicht einen Wortumbruch hatte. Verwenden Sie die folgende Zeile, um den Text ab der angegebenen Zeilennummer 'i' zu erhalten

Kotlin:

var textofline:String = textview.text.subSequence(textview.layout.getLineStart(i), textview.layout.getLineEnd(i)).toString()

Lassen Sie mich wissen, wenn es an Erklärungen mangelt.

PS: Ich bin kein Meister in Android. Nur mein Wissen zu teilen, falls jemand findet es nützlich

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X