How to search for a word in a string and highlight

2019-02-05 04:39发布

问题:

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 following image will give you an idea.

I have used following code to do this but its not working.

CODE:

con is my string and groupNameContent is the text field.

con.replaceAll(arrGroupelements[groupPosition][5],"<font color='#CA278C'>"+arrGroupelements[groupPosition][5]+"</font>.");
groupNameContent.setText(Html.fromHtml(con));

回答1:

for each word, you can use:

TextView textView = (TextView)findViewById(R.id.mytextview01);
//use a loop to change text color
Spannable WordtoSpan = new SpannableString("partial colored text");        
WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(WordtoSpan);


回答2:

If I can understand you have the list of words and you want to find this words in text and highlight them so in this answer you have three input parameter:

  1. full text.
  2. yourList
  3. yourTextview to show the result text

    String text = "full of your text";
    Spannable textSpannable = new SpannableString(text);
    
    for (int j =0 ; j<yourList.size() ; j++) {
        //word of your list
        String word = String.valueOf(yourList.get(j));
        //find index of words
        for (int i = -1; (i = text.indexOf(word, i + 1)) != -1; i++) {
            //find the length of word for set color
            int last = i + word.length();
            //set text color with spannable
            textSpannable.setSpan(new BackgroundColorSpan(Color.parseColor("#0cab8f")),
                    i, last, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }
    yourTextView.setText(textSpannable);