У меня есть 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. Как сделать это (или иначе)?
Нашел ответ здесь.
Вместо прямого вызова прокруткиДля
нужно позвонить на пост
, а не на 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);
}
});