Вопрос

У меня есть 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. Как это сделать (или иное)?

Это было полезно?

Решение

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

Вместо того, чтобы звонить 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);
    }
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top