很多场景我们会遇到:比如说,app应用中添加搜索,将搜索出来的内容使用ListView显示出来。并且给内容中包含的关键字添加红色高亮显示。,
类似的效果图:
其他的程序代码就不用再重复写了/。
这里只列出具体实现高亮的代码。我直接加在listview_item里面的。
解决思路:
使用TextView显示带有html标签的内容,利用标签来设置文字样式。
private SpannableStringBuilder builder = null;
if (null != item) {
// 根据搜索关键字的位置设置关键字为红色
builder = new SpannableStringBuilder(item.getTitle());
if (!keyWord.equals("")) {
// keyWord是搜索的关键字。
// index是该关键字在内容中的位置。
int index = item.getTitle().toString().trim().indexOf(keyWord);
if (index >= 0 && index < builder.length()) {
// 找到这个关键字位置后在该位置前面添加html样式代码。
builder.insert(index, "<font color=\"#ff0000\">");
// 重新计算当前关键字位置。
index = builder.toString().indexOf(keyWord);
// 在最新位置后面添加结束标签。
builder.insert(index + keyWord.length(), "</font>");
}
}
// 显示文字
TextView.setText(Html.fromHtml(builder.toString()));
}
当然,肯定还有很多其他方法。可以再研究。