Android开发之代码开发部分字符串变色
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Android开发之代码开发部分字符串变色
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                方法如下:
方法一:
/*** 字符串截取變紅** @param otherString 你要變色的字符,可為null* @param changeString 你要變色的字符* @param allString 整個字符串* @param number 要變色的控件*/public void stringChangeColor(CheckBox number, String allString, String changeString, String otherString) {int fstart = allString.indexOf(changeString);int fend = fstart + changeString.length();SpannableStringBuilder style = new SpannableStringBuilder(allString);if (!"".equals(otherString) && otherString != null) {int bstart = allString.indexOf(otherString);int bend = bstart + otherString.length();style.setSpan(new ForegroundColorSpan(Color.parseColor("#586E98")), bstart, bend, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);}style.setSpan(new ForegroundColorSpan(Color.parseColor("#586E98")), fstart, fend, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);number.setText(style);}直接調(diào)用即可:
stringChangeColor(registerClause, getString(R.string.reapal_protocol), "《揚宏豕慧用戶協(xié)議》、《法律聲明》、《隱私協(xié)議》", null);方法二:
/*** 設(shè)置部分字符串變色的方法** @param textView 文本控件* @param str 全部的字符* @param start 字符串變色開始的位置* @param end 字符串變色結(jié)束的位置*/private void setSelectTextColor(TextView textView, String str, int start, int end) {//方法二:SpannableStringBuilder style = new SpannableStringBuilder(str);//設(shè)置指定位置textview的背景顏色 // style.setSpan(new BackgroundColorSpan(Color.RED),2,5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);//設(shè)置指定位置文字的顏色 // style.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.colorMain)), str.length() - start, str.length() - end, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);//設(shè)置部分字符串變色以及加粗的方法//style 為0 即是正常的,還有Typeface.BOLD(粗體) Typeface.ITALIC(斜體)等//size 為0 即采用原始的正常的 size大小 style.setSpan(new TextAppearanceSpan(null, Typeface.BOLD, 0, ColorStateList.valueOf(getResources().getColor(R.color.colorMain)), null), str.length() - start, str.length() - end, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);textView.setText(style);}方法三:使用正則匹配
package com.noboauto.module_search.utilimport android.text.SpannableString import android.text.Spanned import android.text.style.ForegroundColorSpan import androidx.core.content.ContextCompat import com.noboauto.common.global.GlobalContext import com.noboauto.module_search.R import java.util.regex.Pattern/**** @author xiayiye5* @date 2021/9/29 10:44*/ object ChangeTextColorUtils {/*** @param text 整個字符串* @param keyword 要變色的字符串*/fun getSpannableString(text: String, keyword: String): SpannableString {val sb = StringBuffer()for (element in keyword) {val s = element.toString() + ""if (pattern(REGULAR_EXPRESSION, s)) {sb.append("\\").append(s)} else {sb.append(s)}}return matcherSearchTitle(ContextCompat.getColor(mContext, R.color.red),text,sb.toString())}private fun matcherSearchTitle(color: Int, text: String, keyword: String): SpannableString {val s = SpannableString(text)val p = Pattern.compile(keyword, Pattern.CASE_INSENSITIVE)val m = p.matcher(s)while (m.find()) {val start = m.start()val end = m.end()s.setSpan(ForegroundColorSpan(color), start, end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)}return s}/*** 正則表達(dá)式匹配** @param regularExpression* @param str* @return*/private fun pattern(regularExpression: String, str: String): Boolean {return Pattern.compile(regularExpression).matcher(str).matches()}private val REGULAR_EXPRESSION ="(" +"\\{|" +"\\}|" +"\\(|" +"\\)|" +"\\[|" +"\\]|" +"\\+|" +"\\?|" +"\\$|" +"\\^|" +"\\||" +"\\.|" +"\\-|" +"\\\\|" +"\\*" +")" }調(diào)用方法如下:
holder.recommendWord.text = ChangeTextColorUtils.getSpannableString("1 水滸傳","1")實現(xiàn)效果如下:
總結(jié)
以上是生活随笔為你收集整理的Android开发之代码开发部分字符串变色的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: JS根据身份证号码算年龄
- 下一篇: 酷云EYE Pro:引领客厅进入大数据时
