in my android application i have a string that contains a specific word so i want to display whole string in text view and the specific word should be highlighted.Hope follo
Just to make it simple, here I post my methode
. . . . . . . .
First getting ready to use the methode
ArrayList searchWords = new ArrayList(Arrays.asList("Second", "Scottish", "forces", "England"));
String text = "1333 – Second War of Scottish Independence: The Scottish-held town of Berwick-upon-Tweed surrendered to English forces, ending a siege led by Edward III of England (depicted).";
TextView sampleTextView = new TextView(currentContext); // currentContext = getContext();
if (searchWords != null) {
Spannable newText = setSpanHighlight(text, searchWords);
sampleTextView.setText(newText, TextView.BufferType.SPANNABLE);
}
else{
sampleTextView.setText(text);
}
The methode
private Spannable setSpanHighlight(String text, @NonNull ArrayList searchWord) {
Spannable newText = new SpannableString(text);
if (searchWord.size() != 0) {
for (String word : searchWord){
if (text.contains(word)){
int beginIndex = text.indexOf(String.valueOf(word)); //Unnecessary 'String.valueOf()' call => if you have something else than String
int endIndex = beginIndex + word.length();
newText.setSpan(
new ForegroundColorSpan(Color.BLUE),
beginIndex,
endIndex,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
}
return newText;
}