Android Html.fromHtml()里面的超链接颜色修改
在安卓里第一次启动都要弹窗隐私提示的弹框,一般做法就是一段写在本地的html代码用Html.fromHtml()去加载,然后超链接可以点击。
private final String str = "欢迎使用xxx!<br>请您先阅读并了解<a href ='https://xxxx'>《隐私政策》</a> 和 <a href ='https://xxx'>《用户协议》</a>我们将严格按照上述协议为您提供服务,保护您的信息安全,点击“同意”即表示您已阅读并同意全部条款,可以继续使用我们的产品和服务。";
tv.setText(Html.fromHtml(str));
隐私政策和用户协议的链接默认是蓝色的,在html代码里加了几种修改
1 <a style='color:颜色值'>隐私政策</a>”
2 <a href=""><font color="white">隐私政策</font></a>
3 <body link="red" alink="blue" vlink="red">
<a href="">隐私政策</a>
</body>
最终都没起作用还是默认的蓝色
可以采用设置setSpan的方式进行修改,比如设置红色
CharSequence text = tv.getText();
if (text instanceof Spannable){
int end = text.length();
Spannable sp = (Spannable) tv.getText();
URLSpan[] urls = sp.getSpans( 0 , end, URLSpan.class );
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.clearSpans(); // should clear old spans
for (URLSpan url : urls){
URLSpan myURLSpan= new URLSpan(url.getURL());
style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(new ForegroundColorSpan(Color.RED), sp.getSpanStart(url), sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//设置为红色
}
tv.setText(style);
}