代码之家  ›  专栏  ›  技术社区  ›  Randy Sugianto 'Yuku'

将文本视图滚动到特定行

  •  10
  • Randy Sugianto 'Yuku'  · 技术社区  · 15 年前

    我在滚动视图中有一个文本视图。假设滚动视图的名称为 s 文本视图的名称为 t .

    我有许多行要在textview中显示,同时我想滚动视图到一个特定的行。

    所以我这样做了:

    t.setText(aVeryLongString);
    int y = t.getLayout().getLineTop(40); // e.g. I want to scroll to line 40
    s.scrollTo(0, y);
    

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

    所以我认为在滚动调用之前必须有一些强制计算所需高度的东西。怎么做(或其他)?

    1 回复  |  直到 14 年前
        1
  •  20
  •   Randy Sugianto 'Yuku'    15 年前

    找到了答案 here .

    而不是打电话 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);
        }
    });