答案 0 :(得分:5)
以下是我的工作代码,可用于突出显示字符串的某些部分:
private void highlightTextPart(TextView textView, int index, String regularExpression) {
String fullText = textView.getText().toString();
int startPos = 0;
int endPos = fullText.length();
String[] textParts = fullText.split(regularExpression);
if (index < 0 || index > textParts.length - 1) {
return;
}
if (textParts.length > 1) {
startPos = fullText.indexOf(textParts[index]);
endPos = fullText.indexOf(regularExpression, startPos);
if (endPos == -1) {
endPos = fullText.length();
}
}
Spannable spannable = new SpannableString(fullText);
ColorStateList blueColor = new ColorStateList(new int[][] { new int[] {}}, new int[] { Color.BLUE });
TextAppearanceSpan textAppearanceSpan = new TextAppearanceSpan(null, Typeface.BOLD_ITALIC, -1, blueColor, null);
BackgroundColorSpan backgroundColorSpan = new BackgroundColorSpan(Color.GREEN);
spannable.setSpan(textAppearanceSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spannable.setSpan(backgroundColorSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannable);
}
然后在您的活动中,请按以下方式拨打电话:
int index = 3;
String regularExpression = " ";
String text = "Hello StackOverflow From BNK!";
TextView textView = (TextView) findViewById(R.id.textView);
if (textView != null) {
textView.setText(text);
highlightTextPart(textView, index, regularExpression);
}
答案 1 :(得分:2)
试试这个
String str = "Some really long string goes in here";
Spannable spannable = new SpannableString(str);
spannable.setSpan(new BackgroundColorSpan(
getResources().getColor(android.R.color.black)
), 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
yourTextView.setText(spannable);
请参阅此Picasso
答案 2 :(得分:2)
String string = "As Soon As";
SpannableString spannableString = new SpannableString(string);
toolBarSpan.setSpan(new BackgroundColorSpan(Color.parseColor("#ff0000")), 3, 7,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
yourTextView.setText(toolBarSpan);
什么是Spannable&amp;这个怎么运作 ? 将指定的标记对象附加到文本的范围开始...结尾,或者如果对象已经附加到其他位置,则将对象移动到该范围。 有关详细信息,请查看link的setSpan&amp;也知道如何开始和结束号码(如Spannable中的anser 3&amp; 7
<强>更新强>
请使用此工作代码
String mainString = "As Soon As";
String subString = "Soon";
if(mainString.contains(subString)) {
int startIndex = mainString.indexOf(subString);
int endIndex = startIndex + subString.length();
SpannableString spannableString = new SpannableString(mainString);
spannableString.setSpan(new BackgroundColorSpan(Color.parseColor("#ff0000")), startIndex, endIndex,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
}
答案 3 :(得分:0)
在Android的Textview中更改特定单词的文本背景颜色的简单最佳方法
TextView txtMessage=findViewById(R.id.textview_msg);
String text="Hello World!";
String search_term="Hello";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
{
String newString = text.replaceAll(search_term, "<span style='background:
yellow;'>"+search_term+"</span>");
txtMessage.setText(Html.fromHtml(newString
,HtmlCompat.FROM_HTML_MODE_LEGACY));
}
else
{
String newString = text.replaceAll(search_term, "<font
color='#f3f402'>"+search_term+"</font>");
txtMessage.setText(Html.fromHtml(newString));
}