将TextView滚动到特定行

Ran*_*ku' 10 android scroll textview

我在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);
Run Code Online (Sandbox Code Playgroud)

但它不会滚动,除了第二次.似乎代码第一次完成时,ScrollView知道TextView的总高度是多少.

所以我认为在scrollTo调用之前必须要强制计算所需的高度.怎么做(或其他)?

Ran*_*ku' 20

这里找到答案.

而不是调用的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);
    }
});
Run Code Online (Sandbox Code Playgroud)