大佬教程收集整理的这篇文章主要介绍了android – 从spannable CharSequence中删除字符,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
它为#字符之间的所有元素设置背景颜色.这是我到目前为止所得到的:
public static CharSequence colorBACkground(CharSequence text) { Pattern pattern = Pattern.compile("#(.*?)#"); SpAnnable spAnnable = new SpAnnableString( text ); if( pattern != null ) { Matcher matcher = pattern.matcher( text ); while( matcher.find() ) { int start = matcher.start(); int end = matcher.end(); CharacterStyle span = new BACkgroundColorSpan(0xFF404040); spAnnable.setSpan( span,start,end,0 ); } } return spAnnable; }
设置背景颜色有效,但占位符字符#也有样式.如何在返回结果之前删除它们,因为CharSequence不存在方法replaceAll?
我使用此函数来设置ListView中的TextView行的样式.添加此样式功能后,在模拟器中感觉有点慢.也许我应该以其他方式接近它,例如使用自定义TextView和自定义绘图功能?
密钥是SpannableStringBuilder.使用SpAnnableString,文本本身是不可变的,但是使用SpAnnableStringBuilder,文本和标记都可以更改.考虑到这一点,我修改了你的代码片段,做你想做的事情:
public static CharSequence colorBACkground(CharSequence text) { Pattern pattern = Pattern.compile("#(.*?)#"); SpAnnableStringBuilder ssb = new SpAnnableStringBuilder( text ); if( pattern != null ) { Matcher matcher = pattern.matcher( text ); int matchesSoFar = 0; while( matcher.find() ) { int start = matcher.start() - (matchesSoFar * 2); int end = matcher.end() - (matchesSoFar * 2); CharacterStyle span = new BACkgroundColorSpan(0xFF404040); ssb.setSpan( span,start + 1,end - 1,0 ); ssb.delete(start,start + 1); ssb.delete(end - 2,end -1); matchesSoFar++; } } return ssb; }
以上是大佬教程为你收集整理的android – 从spannable CharSequence中删除字符全部内容,希望文章能够帮你解决android – 从spannable CharSequence中删除字符所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。