如何在 SpannableStringBuilder android 中检测特定的单词?



我想知道如何检测SpannableStringBuilder中的一些指定单词。 我的目的是改变这句话的颜色。

假设我有SpannableStringBuilder span,列表包括我的单词,如"姓名","家庭","位置"等。

在这个阶段,我想检查我的span是否包含这些单词,然后更改颜色。

例如,我想要这样的东西:

if(span.contain("Name")) // Change Color of the word "Name" every where in this span
if(span.contain("Family")) //  Change Color of the word "Family" every where in this span

所以...

有什么方法可以检查吗? 任何代码示例将不胜感激。

SpannableStringBuilder中没有搜索方法,但您可以在将其转换为String后使用indexOf()

Set<String> words = new HashSet<String>() {{
add("Name"); add("Family"); add("Location");
}};
String s = span.toString();
for (String word : words) {
int len = word.length(); 
// Here you might want to add a check for an empty word
for (int i = 0; (i = s.indexOf(word, i)) >= 0; i += len) {
span.setSpan(new ForegroundColorSpan(Color.BLUE), i, i + len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}

这就是制作多种颜色和单词的方法:

SpannableStringBuilder builder = new SpannableStringBuilder(); 
String red = "this is red"; 
SpannableString redSpannable= new SpannableString(red); 
redSpannable.setSpan(new ForegroundColorSpan(Color.RED), 0, red.length(), 0); 
builder.append(redSpannable); 
String white = "this is white"; 
SpannableString whiteSpannable= new SpannableString(white); 
whiteSpannable.setSpan(new ForegroundColorSpan(Color.WHITE), 0, white.length(), 0); 
builder.append(whiteSpannable); 
String blue = "this is blue"; 
SpannableString blueSpannable = new SpannableString(blue); 
blueSpannable.setSpan(new ForegroundColorSpan(Color.BLUE), 0, blue.length(), 0); builder.append(blueSpannable); mTextView.setText(builder, BufferType.SPANNABLE);

要查找单词索引,请执行以下操作:

int first = str.indexOf("hi"); 
int next = str.indexOf("hi", first+1);

读取接口

执行此操作以获取所有索引并为其着色

相关内容

  • 没有找到相关文章

最新更新