记录一下项目中使用Html.fromHtml(r2)时颜色无效的问题
问题:Html.fromHtml("这里有<font style='color:red;'>美女<font color='red'>哦!");美女没有变红
度了一下,问题中的标红文本样式是CSS样式,而Android系统自带的Html.fromHtml();支持的样式是有限的,所以,显然是不支持CSS样式的!
接着度解决方案,度了一下午,愣是没找到现成可用的轮子,难道要自己写一个?首先,我比较菜,其次,时间它也不允许啊,那只能替换了,但是替换有一个问题,那就是要是不能完全匹配的话,那岂不是GG了,看了下后台给返回的所有的标红,都是问题中所述的那种,OK,直接替换~~~
当然,要是遇到标注不固定的情况(比如上面是标注的颜色,要是里边加了字体大小等等的),通过通配符应该是可以解决的,我没有试,有兴趣的或者有需求的可以试试看
我的解决方案,代码如下:
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));
}
}
}
网友评论