【有人@我】Android中高亮變色顯示文本中的關鍵字


應該是好久沒有寫有關技術類的文章了,前天還有人在群里問我,說群主很長時間沒有分享干貨了,今天分享一篇Android中TextView在大段的文字內容中如何讓關鍵字高亮變色的文章 ,希望對大家有所幫助,我終於在歪路上回歸正途了。這個篇文章在平時應該還算比較常用吧,如果你會了,就不用看了,如果還不會,可以看一眼,非常簡單。

 

今天分享的文章大概內容是在TextView中如何使大段的文字內容中關鍵字變色高亮顯示的,分為一個關鍵字高亮變色顯示和多個關鍵字一起高亮變色顯示。我已經封裝成了KeywordUtil工具類,可以直接調用,效果圖如下:

 

 

具體代碼如下:

package net.loonggg.test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;

public class KeywordUtil {

    /**
     * 關鍵字高亮變色
     * 
     * @param color
     *            變化的色值
     * @param text
     *            文字
     * @param keyword
     *            文字中的關鍵字
     * @return
     */
    public static SpannableString matcherSearchTitle(int color, String text,
            String keyword) {
        SpannableString s = new SpannableString(text);
        Pattern p = Pattern.compile(keyword);
        Matcher m = p.matcher(s);
        while (m.find()) {
            int start = m.start();
            int end = m.end();
            s.setSpan(new ForegroundColorSpan(color), start, end,
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        return s;
    }

    /**
     * 多個關鍵字高亮變色
     * 
     * @param color
     *            變化的色值
     * @param text
     *            文字
     * @param keyword
     *            文字中的關鍵字數組
     * @return
     */
    public static SpannableString matcherSearchTitle(int color, String text,
            String[] keyword) {
        SpannableString s = new SpannableString(text);
        for (int i = 0; i < keyword.length; i++) {
            Pattern p = Pattern.compile(keyword[i]);
            Matcher m = p.matcher(s);
            while (m.find()) {
                int start = m.start();
                int end = m.end();
                s.setSpan(new ForegroundColorSpan(color), start, end,
                        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        }
        return s;
    }
}

其實看完代碼就知道了,非常簡單。大家可以試一試哦!獲取demo的方法跟以前一樣,只需在公眾號里回復關鍵字“5”即可獲得。

 

【特別推薦↓】


 微信公眾號:smart_android ,公眾號[非著名程序員]可能是東半球最好的技術分享公眾號。每天,每周定時推送一些有關移動開發的原創文章和教程。

「非著名程序員」本人建立了一個高端Android微信交流群,如果有想加入的請先加我個人微信號:loonggg ,具體加入條件非常簡單,加我個人微信號時,請備注為:加群,到時會告訴你具體的加入流程,感謝🙏每位開發者的配合。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM