我在ScrollView中有一个TextView。假设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调用之前必须要强制计算所需的高度。怎么做(或其他)?
答案 0 :(得分:20)
找到答案here。
我们必须在ScrollView上调用scrollTo
,而不是直接调用post
。这很有效。
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);
}
});