java - 将 ScrollView 中的 TextView 滚动到特定的文本子串

标签 java android textview scrollview

对于初学者,我是一名 C++/Qt 开发人员,正在跳入 Android/Java 开发领域,所以请不要假设我什么都懂。 :) 所以,我有一个应用程序,它的 TextView 包含在 ScrollView 中。 TextView 中包含的文本是来 self 的 Web 服务器应用程序的 Web 查询的结果。根据查询的不同,文本可能会很长。我想在用户输入要搜索的文本字符串的文本上实现搜索功能,如果找到文本字符串,ScrollView 将滚动 TextView 以确保输入的子字符串可见,并且我希望文本突出显示。我想我知道如何突出显示文本子字符串,我知道如何告诉 ScrollView 滚动到 TextView 中的特定行号,但对于我来说,我无法弄清楚如何找出要显示的行号滚动到以保证我的子字符串可见。即,我想查询 TextView 以提供子字符串首次出现的行号。最后,我还想实现一个查找下一个子字符串的下一个匹配项。有点像 Firefox 中的查找功能。非常感谢任何帮助。提前致谢。

最佳答案

你需要自己找到子串在文本中的位置,e.g.与 String.indexOf() .一旦知道该位置,就可以使用 Layout.getLineForOffset() 在 TextView 中查找正确的行。功能:

int offset=myString.indexOf("search string");
int line = myTextView.getLayout().getLineForOffset(offset);

关于java - 将 ScrollView 中的 TextView 滚动到特定的文本子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221744/

相关文章:

android - 如何在 Android 中使用 azure 脸部 api?

android - <supports-gl-texture> 属性

android - Auth 1.0 oauth_signature 创建 Android for magento API

Android TextView 和获取文本行

android:自定义文本选择器

java - 如何找到我的 Web 服务的 URL?

多线程 Java 代码的 java.util.ConcurrentModificationException

android:textColorHighlight=透明被忽略

java - 使用java时进程输入流有限制吗?

java - 在 Selenium 中执行 WebElement#click() 之前如何检查是否存在重叠元素