可能重复:
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);
}
试试这个方法
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
有关完整示例,请参见此内容: