效果
第一步:按如下所示代码创建一个用来高亮显示文本的工具类:
public class KeywordUtil {
public static SpannableString highLight(int color, String text, String keyword) {
SpannableString res = new SpannableString("\t\t\t" + text);
Pattern pattern = Pattern.compile(keyword);
Matcher matcher = pattern.matcher(res);
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
res.setSpan(new ForegroundColorSpan(color), start, end,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return res;
}
public static SpannableString highLight(int color,String text,String... keyword) {
SpannableString res = new SpannableString("\t\t\t" + text);
for (String key : keyword) {
Pattern pattern = Pattern.compile(key);
Matcher matcher = pattern.matcher(res);
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
res.setSpan(new ForegroundColorSpan(color), start, end,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
return res;
}
public static SpannableString highLight(int[] cs,String text,String... keyword) {
SpannableString res = new SpannableString("\t\t\t" + text);
for (int i = 0; i < color.length; i++) {
Pattern pattern = Pattern.compile(keyword[i]);
Matcher matcher = pattern.matcher(res);
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
res.setSpan(new ForegroundColorSpan(cs[i]), start, end,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
return res;
}
}
第二步:在主布局文件中添加三个id值分别为textView1、textView3、textView3的TextView控件,然后修改MainActivity类的代码如下所示:
public class MainActivity extends AppCompatActivity {
private android.widget.TextView textView1;
private android.widget.TextView textView2;
private android.widget.TextView textView3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.textView2 = (TextView) findViewById(R.id.textView2);
this.textView1 = (TextView) findViewById(R.id.textView1);
this.textView3 = (TextView) findViewById(R.id.textView3);
String text = "随着棉花糖的出现,一种新……度,探讨处理权限请求的方法";
SpannableString spanStr1 = KeywordUtil.highLight(Color.RED, text, "权限");
textView1.setText(spanStr1);
SpannableString spanStr2 = KeywordUtil.highLight(
Color.RED, text, "棉花糖","权限","安卓");
textView2.setText(spanStr2);
SpannableString spanStr3 = KeywordUtil.highLight(
new int[]{Color.RED,Color.GREEN,Color.BLUE}, text, "棉花糖","权限","安卓");
textView3.setText(spanStr3);
}
}