可能重复的问题:
是否可以在TextView中有多种文本样式?
我想让我的TextView展示部分红色文字和部分黑色文字。它的内容(文字)是动态创建的,我不知道有多少单词需要变成红色。
是否有办法像html-css一样来实现这个效果?
可能重复的问题:
是否可以在TextView中有多种文本样式?
我想让我的TextView展示部分红色文字和部分黑色文字。它的内容(文字)是动态创建的,我不知道有多少单词需要变成红色。
是否有办法像html-css一样来实现这个效果?
您可以使用Spannable来实现您想要的效果。
String text = "This is <font color='red'>red</font>. This is <font color='blue'>blue</font>.";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
textView.setText(Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY), TextView.BufferType.SPANNABLE);
} else {
textView.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE);
}
<![CDATA[**你的字符串在此**]]>
包围它)。然后,像他说的那样设置字符串,但你不需要使用 TextView.BufferType.SPANNABLE。 - Daniel Handojo尝试这种方式
TextView tv = (TextView)findViewById(R.id.tv);
Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");
wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
wordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), 5, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(wordtoSpan);
你需要的基本上是 SpannableString
。
参考这个完整示例: