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);

ただし、2回目以外はスクロールしません。コードが最初に終了したときに、ScrollViewはTextViewの全高がどれくらいかを知っているようです。

したがって、scrollToを呼び出す前に、必要な高さを強制的に計算する必要があると思います。それを行う方法(またはそれ以外の方法)?

4

1 に答える 1

20

ここで答えを見つけました。

scrollTo直接呼び出す代わりに、ScrollViewで呼び出す必要があります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);
    }
});
于 2009-12-23T03:20:44.640 に答える