将TextView滚动到特定行

时间:2009-12-22 10:24:52

标签: 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);

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

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

1 个答案:

答案 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);
    }
});