如何有条件地更改 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
}
假设您的颜色:#FF0000
在 colors.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));
我正在制作一个向用户显示信息的应用程序。信息的值应该包含在某些参数中。如果有错误,它们可能不在这些参数中。如果该值不在这些参数范围内,我希望文本的颜色为红色(表示错误)。如果数字接近不正确,我希望文本为黄色(表示警告)。最后,如果信息正确,我希望文本为绿色。是否可以有条件地为相关文本着色?
我尝试在使用 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
}
假设您的颜色:#FF0000
在 colors.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));