代码如下,直接调用即可:
/**
* 搜索关键字高亮
* @param view
* @param value
* @param keys 由key.spilt(" ") 分割获得
* @param context
*/
public static void setUpTextView(TextView view, final String value, String[] keys, Context context) {
if (Util.checkNull(value) || keys == null) {
view.setText(value);
return;
}
final SpannableStringBuilder builder = new SpannableStringBuilder(value);
// 先将所有需要高亮的索引置为1
final int[] array = new int[value.length()];
for (int i = 0; i < array.length; i++)
array[i] = 0;
for (String key : keys) {
if (TextUtils.isEmpty(key)) {
continue;
}
int s = value.indexOf(key);
int e = s + key.length();
if (e <= value.length() && s >= 0) {
for (int j = s; j < e; j++) {
array[j] = 1;
}
}
}
// 根据上面结果,合并索引
int index = 0;
while (index < array.length) {
if (array[index] == 0) {
index++;
continue;
}
final int s = index;
while (index < array.length && array[index] == 1) {
index++;
}
final int e = index;
//设置关键字颜色 #fb5b5e
final ForegroundColorSpan span = new ForegroundColorSpan(context.getResources().getColor(R.color.red_checked));
builder.setSpan(span, s, e, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
view.setText(builder);
}