Android - Highlight a Word In a TextView?

后端 未结 9 1771
予麋鹿
予麋鹿 2020-12-07 15:57

I have a database search query which search in the database for a word entered by the user and return a Cursor.

In my ListActivity

9条回答
  •  不思量自难忘°
    2020-12-07 16:29

    I know it's old question but i have created a method to highlight a repeated-word in string\paragraph.

    private Spannable highlight(int color, Spannable original, String word) {
        String normalized = Normalizer.normalize(original, Normalizer.Form.NFD)
                .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
    
        int start = normalized.indexOf(word);
        if (start < 0) {
            return original;
        } else {
            Spannable highlighted = new SpannableString(original);
            while (start >= 0) {
                int spanStart = Math.min(start, original.length());
                int spanEnd = Math.min(start+word.length(), original.length());
    
                highlighted.setSpan(new ForegroundColorSpan(color), spanStart,
                        spanEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    
                start = normalizedText.indexOf(word, spanEnd);
            }
            return highlighted;
        }
    }
    

    usage:

    textView.setText(highlight(primaryColor, textAll, wordToHighlight));
    

提交回复
热议问题