Frage

Ich habe eine Textansicht in einer Scrollview. Nehmen wir an, die Scrollview ist benannt s und der Textview ist benannt t.

Ich habe viele Zeilen in der Textansicht und gleichzeitig möchte ich die Ansicht in eine bestimmte Zeile scrollen.

Also habe ich das getan:

t.setText(aVeryLongString);
int y = t.getLayout().getLineTop(40); // e.g. I want to scroll to line 40
s.scrollTo(0, y);

Aber es wird nicht scrollen, außer das zweite Mal. Es scheint, dass das ScrollView beim ersten Mal den Code beendet, wie viel die Gesamthöhe des Textviews ist.

Ich denke, es muss etwas geben, um die benötigte Höhe zu berechnen, bevor der Scrollto -Anruf aufgerufen wird. Wie mache ich das (oder anderweitig)?

War es hilfreich?

Lösung

Fand die Antwort hier.

Anstatt zu rufen scrollTo Direkt müssen wir anrufen post Stattdessen auf der Scrollview. Das funktioniert.

t.setText(aVeryLongString);
s.post(new Runnable() {
    @Override
    public void run() {
        int y = t.getLayout().getLineTop(40); // e.g. I want to scroll to line 40
        s.scrollTo(0, y);
    }
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top