【问题标题】:Scrolling a TextView to a specific line将 TextView 滚动到特定行
【发布时间】:2010-12-29 01:32:21
【问题描述】:

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

【问题讨论】:

  • 你是在 UI 线程中运行代码吗?
  • 是onReceiveResult处的代码(调用另一个activity,activity放了一些数据并finish(),并接收到了数据)。我对android中的线程模型了解不够。

标签: android scroll textview


【解决方案1】:

找到答案here

我们必须在 ScrollView 上调用 post,而不是直接调用 scrollTo。这行得通。

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

【讨论】:

  • 差不多 2 年后.. 我认为这与将代码发布到处理程序相同。事实证明,您需要将其发布到滚动视图而不是处理程序。 (以上代码正确)
猜你喜欢
  • 1970-01-01
  • 2019-07-06
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多