如何有条件地更改 Android 中的文本颜色?

How to conditionally change text color in Android?

我正在制作一个向用户显示信息的应用程序。信息的值应该包含在某些参数中。如果有错误,它们可能不在这些参数中。如果该值不在这些参数范围内,我希望文本的颜色为红色(表示错误)。如果数字接近不正确,我希望文本为黄色(表示警告)。最后,如果信息正确,我希望文本为绿色。是否可以有条件地为相关文本着色?

我尝试在使用 tvSteamTemp.setTextColor(R.color.RED); 的主 .java 文件中使用 if 语句。当我这样做时,它说 "cannot resolve symbol 'color'."

我也曾尝试在与上面相同的代码行中使用红色的十六进制值,将其替换为 R.color.RED。这回来了同样的错误:说 "cannot resolve symbol '#FF0000'."

这就是我认为代码的样子。当我研究它时,这似乎是人们所说的方式,他们只是没有正确的代码来设置文本颜色。

    if(212 > steamTemp){
        ***Code to set color to red here***
    }else if(235 >= steamTemp && 212 <= steamTemp){
        ***Code to set color to yellow here***
    }else if(235 < steamTemp){
        ***Code to set color to green here***

如果 steamTemp 变量低于 212 华氏度,则其 textView 为红色。如果介于 212 和 235 之间,则为黄色。如果高于 235,则为绿色。我想我应该能够弄清楚条件语句,因为它应该是基本编程,我只是不知道如何从语句中设置颜色。

尝试使用

textView.setTextColor(Color.RED);

textView.setTextColor(Color.parseColor("#FF0000"));

关于ifs,你可以试试

if (steamTemp < 212) {
    // red
} else if (steamTemp <= 235) {
    // yellow
} else {
    // green
}

假设您的颜色:#FF0000colors.xml

中定义
steamTemp.setTextColor(getResources().getColor(R.color.nameOfYourColor));

或使用 Android 预定义颜色:

steamTemp.setTextColor(getResources().getColor(android.R.color.holo_red_dark));

很简单,看Android的Color class:

tv.setTextColor(Color.RED);
//or
tv.setTextColor(Color.parseColor("#FF0000"));

或来自资源的颜色:

tv.setTextColor(getResources().getColor(R.color.yourDeclaredColor));

上面的每个答案我都看完了

我建议不要使用

getResources().getColor(R.color.your_color_code)

自 android 6.0 (API 22+) 以来,已弃用,因此您应该使用:

tv.setTextColor(getContext().getColor(R.color.your_color_code,theme));

OR 上下文兼容性 class

tv.setTextColor(ContextCompat.getColor(getContext(),R.color.your_color_code));