Java 如何在TextView中更改特定字符串的颜色

Java 如何在TextView中更改特定字符串的颜色,java,android,html,textview,Java,Android,Html,Textview,我有一个可滚动的文本视图,上面有这样的文本 ... Tom: sometext Jack: anothertext Sam: something ... 因此,我将这些数据作为JSON对象获取,然后分离键和值,然后添加到字符串中。然后我将TextView的文本设置为最后一个字符串 我想要的是,我想为汤姆、杰克、萨姆制作不同的颜色。我找到了HTML库,但所有的解决方案都改变了整个文本视图。我想更改文本的特定部分,因为我首先得到了一个JSON数据,并且我将把这个JSON值一部分一部分地添加到字符串

我有一个可滚动的文本视图,上面有这样的文本

...
Tom: sometext
Jack: anothertext
Sam: something
...
因此,我将这些数据作为JSON对象获取,然后分离键和值,然后添加到字符串中。然后我将TextView的文本设置为最后一个字符串

我想要的是,我想为汤姆、杰克、萨姆制作不同的颜色。我找到了HTML库,但所有的解决方案都改变了整个文本视图。我想更改文本的特定部分,因为我首先得到了一个JSON数据,并且我将把这个JSON值一部分一部分地添加到字符串中,所以我想我可以这样做
string+=JSON[“key”]+JSON[“anotherKey”]


是否可以更改TextView对象文本的特定部分?

查看可扩展字符串。你可能会得到这样的结果

val spannable = SpannableStringBuilder("Text " + JSON["key"])
spannable.setSpan(
    ForegroundColorSpan(Color.RED),
    5, // start
    5 + JSON["key"].length, // end
    Spannable.SPAN_EXCLUSIVE_INCLUSIVE
)
有关跨距的更多信息,请参见


注意:此示例在Kotlin中,但在Java中几乎相同。

您可以使用下面的代码片段在文本视图中更改文本颜色

val blackColor= ContextCompat.getColor(context, R.color.black)
val redColor= ContextCompat.getColor(context, R.color.red)

textView.text = HtmlCompat.fromHtml("<font color=\"$blackColor\">Welcome to </font> <font color=\"$redColor\">Stack Overflow </font>", HtmlCompat.FROM_HTML_MODE_LEGACY)
val blackColor=ContextCompat.getColor(context,R.color.black)
val redColor=ContextCompat.getColor(context,R.color.red)
textView.text=HtmlCompat.fromHtml(“欢迎使用堆栈溢出”,HtmlCompat.FROM\u HTML\u MODE\u LEGACY)
上面的代码是用kotlin编写的,它与您可以转换为Java的Java相同。
希望它能为你工作

删除了标签
android studio
,因为该标签用于处理与android studio产品相关的问题。你的问题是安卓系统的问题,与安卓工作室的产品无关。你是说那不起作用吗?@javdromero是的,那不起作用