【问题标题】:How to conditionally change text color in Android?如何有条件地更改 Android 中的文本颜色?
【发布时间】:2019-09-12 20:20:28
【问题描述】:

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

我尝试在使用tvSteamTemp.setTextColor(R.color.RED); 的主要.java 文件中使用if 语句。当我这样做时,它说它“无法解析符号'颜色'。”

我还尝试在与上面相同的代码行中使用红色的十六进制值,将其替换为R.color.RED。这又出现了同样的错误:说“无法解析符号'#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,则为绿色。我想我应该能够弄清楚条件语句,因为它应该是基本编程,我只是不知道如何从语句中设置颜色。

【问题讨论】:

    标签: android colors textview


    【解决方案1】:

    尝试使用

    textView.setTextColor(Color.RED);
    

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

    关于ifs,你可以试试

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

    【讨论】:

      【解决方案2】:

      假设你的颜色:#FF0000colors.xml 中定义

      steamTemp.setTextColor(getResources().getColor(R.color.nameOfYourColor));
      

      或者使用Android预定义的颜色:

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

      【讨论】:

      • yupi getResources().getColor(android.R.color.holo_red_dark) 自 android 6.0 起已弃用,因此您应该使用 ContextCompact.getColor(getContext(),R.color.your_color_code)
      【解决方案3】:

      很简单,看Android的Color类:

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

      或来自资源的颜色:

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

      【讨论】:

        【解决方案4】:

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

        我建议不要使用

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

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

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

        OR Context Compat

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-07-22
          • 2017-09-15
          • 2016-12-12
          • 2021-01-09
          • 1970-01-01
          • 2015-09-14
          • 1970-01-01
          相关资源
          最近更新 更多