記錄一下項(xiàng)目中使用Html.fromHtml(r2)時(shí)顏色無效的問題
問題:Html.fromHtml("這里有<font style='color:red;'>美女<font color='red'>哦!");美女沒有變紅
度了一下杭煎,問題中的標(biāo)紅文本樣式是CSS樣式瓶蝴,而Android系統(tǒng)自帶的Html.fromHtml();支持的樣式是有限的,所以,顯然是不支持CSS樣式的饿幅!
接著度解決方案,度了一下午戒职,愣是沒找到現(xiàn)成可用的輪子栗恩,難道要自己寫一個(gè)?首先洪燥,我比較菜磕秤,其次乳乌,時(shí)間它也不允許啊,那只能替換了市咆,但是替換有一個(gè)問題汉操,那就是要是不能完全匹配的話,那豈不是GG了蒙兰,看了下后臺給返回的所有的標(biāo)紅磷瘤,都是問題中所述的那種,OK搜变,直接替換~~~
當(dāng)然采缚,要是遇到標(biāo)注不固定的情況(比如上面是標(biāo)注的顏色,要是里邊加了字體大小等等的)挠他,通過通配符應(yīng)該是可以解決的扳抽,我沒有試,有興趣的或者有需求的可以試試看
我的解決方案殖侵,代碼如下:
HtmlUtil.setCssStr(tvTitle, b.Title);
/**
* Des:
* Created by kele on 2020/9/27.
* E-mail:984127585@qq.com
*/
public class HtmlUtil {
public static String getCssStr(String str) {
String r1 = str.replace("<font style='color:red;'>", "<font color='red'>");
String r2 = r1.replace("</font>", "</font>");
return r2;
}
public static void setCssStr(TextView tv, String str) {
String r2 = getCssStr(str);
if (TextUtils.isEmpty(r2)) {
tv.setText(str);
} else {
tv.setText(Html.fromHtml(r2));
}
}
}