Прокрутка TextView на определенную строку - PullRequest
10 голосов
/ 22 декабря 2009

У меня есть TextView внутри ScrollView. Допустим, ScrollView называется s, а TextView - t.

У меня много строк для отображения в TextView, и в то же время я хочу прокрутить вид до определенной строки.

Итак, я сделал это:

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

Но это не будет прокрутка, кроме во второй раз. Кажется, что в первый раз, когда код заканчивается, ScrollView знает, какова общая высота TextView.

Так что я думаю, что должно быть что-то, чтобы заставить вычислить необходимую высоту перед вызовом scrollTo. Как это сделать (или иным образом)?

1 Ответ

20 голосов
/ 23 декабря 2009

Нашел ответ здесь .

Вместо прямого вызова scrollTo мы должны вызвать post вместо ScrollView. Это работает.

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);
    }
});
...