java - 用没有 HTML 的 Spas 替换某些字符串
问题描述
我正在尝试用跨度替换某个字符串。
例如我有这个字符串:
String s = "redHello greenWorld";
我想将“红色”替换为:
modifiedText.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
和“绿色”:
modifiedText.setSpan(new ForegroundColorSpan(Color.parseColor("#00FF00")), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
所以我以这种方式创建 modifiedText :
Spannable modifiedText = new SpannableString(s);
如何用没有 HTML 的 Span 替换某个字符串?
解决方案
SpannableString
不拆分(子字符串)给定的String
. 它只是使用开始和结束索引更改给定范围的属性。如果要更改 a 的某些部分的颜色,String
则不需要子字符串(或剪切)。只需对要更改的部分使用开始和结束索引,其余部分将保持不变(原始)。在您的情况下,根据您的问题,您想更改红色和绿色单词的颜色,因此只需使用 2setSpan
种方法,这些单词的开始和结束索引为。
String s = "redHello greenWorld";
SpannableString modifiedText = new SpannableString(s);
//Change the color for 'red' word
modifiedText.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//Change the color for 'green' word
modifiedText.setSpan(new ForegroundColorSpan(Color.parseColor("#00FF00")), 9, 14, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
即使它SpannableString
仍然String
如此,String
如果你想将它设置Text
为你的View
. 例如,如果您想将其设置String
为您的TextView
使用setText()
方法SpannableString
。
textView.setText(modifiedText);
推荐阅读
- java - 如何为网站添加和使用 cookie?
- javascript - 如何通过转动鼠标滚轮使网站按视口高度滚动?
- javascript - 如何设置 unicode 字符的样式?
- css-selectors - 带有 fs 的扩展选择器函数
- sql - 在架构不好的做法中制作重复的外键?
- sql - 根据 Obiee 中的当前日期限制所有月份的数据
- sql - SQL:将一个表中的单行连接到另一个表中的所有行
- php - Wordpress 错误:没有日志,没有消息,没有信息
- java - spring boot 添加多行
- deployment - JBoss 应用程序部署失败,出现 WFLYCTL0288