我在 ScrollView 中有一个 TextView,TextView 填充了一个大文本,在任何时候都只能在屏幕上看到其文本的一部分。
现在我想(以编程方式)强制文本的某些部分对用户可见。例如,我的文字是:

Lorem ipsum dolor 坐 amet,consectetur adipiscing 精英。众所周知。 Nulla facilisi。 Sed gravida fringilla velit, non sollicitudin Tellus egestas non。 Cras congue,nulla id bibendum tempus,dui dui blandit elit,elementum dictum dolor eros et mi。 Nullam leo Tellus,aliquet vel tincidunt sed,suscipit nec dui。 Nunc dapibus、odio 前庭、hendrerit 前庭、lorem orci dictum arcu、quis porttitor lorem libero 坐 amet odio。 Sed imperdiet viverra diam、eu porttitor ipsum fringilla 等。 Suspendisse consectetur sapien ac felis tincidunt dictum。 Suspendisse ultrices porta dignissim。 Maecenas in nibh sed nisi facilisis dignissim non ut Tortor 。 Pellentesque eleifend tempus sem,坐 amet mattis arcu auctor id。 Vivamus 在 Tortor rutrum diam 前庭 adipiscing。暂停潜力。整数 sollicitudin laoreet enim ac suscipit。 Quisque convallis facilis pharetra。

我想强制粗体字(在本例中为 tortor )对用户来说是 可见的 (也许通过使用正确的值垂直滚动文本 View )。
有没有办法做到这一点?

编辑:我不想把这个词加粗!问题已更新以澄清我的要求。

最佳答案

这是滚动到特定单词的一种方法:

public void scrollToWord(String string) {
    TextView textView = (TextView) findViewById(R.id.text1);
    String text = textView.getText().toString();

    // Find the first occurrence of the word
    int position = text.indexOf(string);
    // Calculate how far in the word is: 30%, 40%, 73%
    int percent = (int) (position / (double) text.length() * 100);
    // Calculate how far to scroll
    int y = textView.getHeight() * percent;

    // Finally scroll
    ((ScrollView) textView.getParent()).scrollTo(0, y);
}

对此我有两点说明:
  • 这只会滚动到第一次出现,但很容易更改为 String.indexOf(string, start) 并找到第二次、第三次等。
  • 如果您想在应用程序启动后立即滚动到此位置,则必须等到 onResume() 完成后。但是没有方法可以解决这个问题……我建议使用处理程序,如果您需要,我可以为您提供帮助。

  • 希望有帮助!

    关于android - 如何使长 TextView 的一部分在屏幕上可见?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12146967/

    10-12 00:30
    查看更多