Android 文本关键字高亮显示

引言

在移动应用开发中,我们经常会遇到需要对特定关键字或短语进行高亮显示的需求。例如,在聊天应用中,我们希望对聊天记录中的特定关键字进行突出显示,以便用户更容易找到感兴趣的内容。在本文中,我们将介绍如何在 Android 应用中实现文本关键字的高亮显示。

实现方法

方法一:SpannableString

Android 提供了一个名为 SpannableString 的类,它可以对字符串进行各种格式化操作,包括关键字高亮显示。我们可以使用 SpannableString 来实现文本关键字的高亮显示。

String originalText = "This is a sample text to highlight keyword.";
String keyword = "sample";

SpannableString spannableString = new SpannableString(originalText);
int startIndex = originalText.indexOf(keyword);
int endIndex = startIndex + keyword.length();

ForegroundColorSpan foregroundSpan = new ForegroundColorSpan(Color.RED);
spannableString.setSpan(foregroundSpan, startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

textView.setText(spannableString);

在上面的代码示例中,我们首先创建了一个原始文本字符串 originalText,并指定了需要高亮显示的关键字 keyword。然后,我们使用 SpannableString 将原始文本字符串转换为可进行格式化操作的字符串对象。接下来,我们使用 indexOf 方法找到关键字在原始文本字符串中的起始位置,并计算出终止位置。最后,我们创建了一个 ForegroundColorSpan 对象,用于指定高亮显示的颜色。通过 setSpan 方法,我们将 ForegroundColorSpan 应用到 SpannableString 中的指定区间,从而实现对关键字的高亮显示。

方法二:Html.fromHtml

另一种实现文本关键字高亮显示的方法是使用 Html.fromHtml 方法。这个方法可以将包含 HTML 标签的字符串转换为可显示的文本。

String originalText = "This is a sample text to <b>highlight</b> keyword.";
String keyword = "highlight";

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    textView.setText(Html.fromHtml(originalText, Html.FROM_HTML_MODE_COMPACT));
} else {
    textView.setText(Html.fromHtml(originalText));
}

在上面的代码示例中,我们首先创建了一个原始文本字符串 originalText,并使用 HTML 标签 <b> 将关键字包围起来。然后,我们使用 Html.fromHtml 方法将包含 HTML 标签的字符串转换为可显示的文本,并将其设置为 TextView 的内容。如果设备的 API 版本大于等于 24(Android 7.0),我们可以指定 Html.FROM_HTML_MODE_COMPACT 参数来提高性能。

结论

通过使用 SpannableString 或 Html.fromHtml 方法,我们可以轻松地在 Android 应用中实现文本关键字的高亮显示。无论是使用 SpannableString 还是 Html.fromHtml,都能够满足不同的需求。希望本文能够帮助你实现文本关键字的高亮显示功能。

附录

关系图

erDiagram
    SpannableString ||..|{ ForegroundColorSpan : extends
    SpannableString ||..|{ Html : extends
    SpannableString }|--|| TextView : contains

在上面的关系图中,我们可以看到 SpannableString 和 Html 类都扩展自基类 SpannableString。TextView 则包含了 SpannableString 对象,用于显示高亮关键字的文本内容。

引用形式的描述信息

SpannableString 是 Android 提供的一个类,用于对字符串进行各种格式化操作,包括关键字高亮显示。通过使用 SpannableString,我们可以方便地实现文本关键字的高亮显示功能。

Html.fromHtml 是 Android 提供的一个方法,用于将包含 HTML 标签的字符串转换为可显示的文本。通过使用 Html.fromHtml,我们可以实现文本关键字的高亮显示,同时支持其他 HTML 标签的格式化效果。