很多场景我们会遇到:比如说,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())); }
当然,肯定还有很多其他方法。可以再研究。