android - 使用 SpannableStringBuilder 格式化 EditText 和 TextView
问题描述
我有一个 TextView 显示从 db 检索到的文本,并且文本的某些部分被标记为注释。
这里是样本......
// CREATE A VARIABLE AT THE CLASS LIKE THIS...
private static int delay = 4000; //4Secs
/*NOW THE DELAY METHOD*/
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// DECLARE ACTIONS TO BE DELAYED HERE...
}
}, delay);
现在我希望所有单行和多行注释文本都具有不同的 textColor。我该怎么做?
解决方案
如果您使用 html 的 font-color 属性格式化字符串,然后将其传递给方法 Html.fromHtml(your text here)
String text = "<font color=#cc0029>First Color</font> <font color=#ffcc00>Second Color</font>";
yourtextview.setText(Html.fromHtml(text));
或者您可以在没有 HTML 的情况下打印具有多种颜色的行:
SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString str1= new SpannableString("Text1");
str1.setSpan(new ForegroundColorSpan(Color.RED), 0, str1.length(), 0);
builder.append(str1);
SpannableString str2= new SpannableString("Text2");
str2.setSpan(new ForegroundColorSpan(Color.GREEN), 0, str2.length(), 0);
builder.append(str2);
TextView tv = (TextView) view.findViewById(android.R.id.text1);
tv.setText( builder, TextView.BufferType.SPANNABLE);
推荐阅读
- java - 每次我必须改变一些东西来反映
- android - 使用 Flutter/Dart 构建的应用空间
- apache-kafka - 卡夫卡 ISR 缩小且不扩展
- vba - Excel VBA宏根据其他工作表中的值将粘贴值复制到其他工作表
- python - Argparse:根据位置参数计算默认值
- android - 在 XWalkView (CrossWalk) 中打开不受信任的 SSL 链接时出现 SSL 错误
- magento2 - Magento 2 Algolia Search 按最低价格排序等显示损坏的结果
- google-cloud-platform - 谷歌云计算引擎虚拟机关闭的未知原因?
- pandas - 使用数据着色器、全息视图和散景进行地理映射的麻烦
- javascript - 检查数组是否在javascript中仅包含一次值