11

我在 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调用之前必须有一些东西可以强制计算所需的高度。如何做到这一点(或以其他方式)?

4

1 回答 1

20

在这里找到了答案。

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);
    }
});
于 2009-12-23T03:20:44.640 回答