Прокрутка TextView до определенной строки
У меня есть 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
Нашел ответ здесь.
Вместо прямого вызова 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);
}
});