Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何在SpannableString中反转跨度的优先级大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
添加到spAnnable的跨度的优先级会影响TextView中的外观.
当我们将两个嵌套的字符样式添加到如下所示的spAnnable时

SpAnnableStringBuilder sp = new SpAnnableStringBuilder();
String blue = "blue";
String red = "red";
sp.append(bluE);
sp.append(red);
sp.append(bluE);
sp.setSpan(new ForegroundColorSpan(Color.RED),blue,2*blue,SpAnned.SPAN_EXCLUSIVE_EXCLUSIVE);        
sp.setSpan(new ForegroundColorSpan(Color.bLUE),sp.length(),SpAnned.SPAN_EXCLUSIVE_EXCLUSIVE);
((TextView)findViewById(R.id.text_view)).setText(sp);

添加字符样式的顺序对于文本外观很重要.
Android通过SpAnned.SPAN_PRIORITY标志来设置处理跨度优先级的方法.但是当我们使用Html.fromHtml()时,优先级不在我们手中.那么我可以改变Html.fromHtmel输出的跨度优先级,还是可以从中创建新的spAnnable并创建新的span优先级;

解决方法

我为自己做了一点解决方法.它创建了新的SpAnnable,其跨度反转.

final SpAnnable revertSpans(SpAnned stext) {
    Object[] spans = stext.getSpans(0,stext.length(),Object.class);
    SpAnnable ret = SpAnnable.Factory.geTinstance().newSpAnnable(stext.toString());
    if (spans != null && spans.length > 0) {
        for(int i = spans.length - 1; i >= 0; --i) {
            ret.setSpan(spans[i],stext.getSpanStart(spans[i]),stext.getSpanEnd(spans[i]),stext.getSpanFlags(spans[i]));
        }
    }

    return ret;
}

用法

TextView tv = (TextView)finViewById(R.id.my_text_view);
SpAnned stext = Html.fromHtml(text,null,mytagHandler);
SpAnnable sreverted = revertSpans(stext); 
tv.setText(sreverted);

也许这很有用.

大佬总结

以上是大佬教程为你收集整理的android – 如何在SpannableString中反转跨度的优先级全部内容,希望文章能够帮你解决android – 如何在SpannableString中反转跨度的优先级所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。