【问题标题】:setTextColor depending on random String from array - AndroidsetTextColor 取决于数组中的随机字符串 - Android
【发布时间】:2016-09-27 12:04:37
【问题描述】:

我有一个带有颜色名称的字符串数组和一个带有颜色的数组:

String[] words = new String[] {"yellow", "white", "green"};
int[] colors = new int[] {Color.YELLOW, Color.WHITE, Color.GREEN};

我的TextView 被随机设置为这些单词之一,现在如果选择黄色等,我想将文本颜色设置为黄色。我用if 语句尝试了这个,但它一直只显示黑色单词.

【问题讨论】:

    标签: java android arrays random


    【解决方案1】:

    1) 检索 TextView 拥有的单词:

    String chosenWord = String.valueOf(yourTextView.getText());
    

    2) 获取chosenWordwords 中的位置:

    int position = Arrays.asList(words).indexOf(chosenWord);
    

    3) 获取对应的颜色:

    int newColor = Color.BLACK;
    if(position > -1) {
        newColor = colors[position];
    }
    yourTextView.setTextColor(newColor);
    

    For all the ways to change a TextView color check this.


    顺便说一句,你知道Map吗?当您需要将键映射到特定值时,可以在这种情况下使用它们。

    【讨论】:

      【解决方案2】:

      您可以为此使用模型对象。例如

       public class MyColor {
          public String mColorName;
          public int mColor;
      
          public MyColor (String name, int color) {
             mColorName = name;
             mColor = color;
          }
       }
      

      然后像这样声明你的数组

       MyColor[] color = new MyColor[] { new MyColor("yellow", Color.YELLOW),  new MyColor("white", Color.WHITE), new MyColor("green", Color.GREEN) };
      

      这样您可以轻松访问与颜色关联的名称

      【讨论】:

        【解决方案3】:

        通过这种方式,您拥有一个阵列并且更易于管理。

        public class MyColor {
            public String name;
            public int code;
        
            public MyColor(String n, int c) {
                this.name = n;
                this.code = c;
            }
        
        }
        
        ArrayList<MyColor> colors = new ArrayList<>();
        colors.add(new MyColor("black", Color.BLACK));
        colors.add(new MyColor("yellow", Color.YELLOW));
        colors.add(new MyColor("green", Color.GREEN));
        
        for (MyColor color : colors) {
            if(color.name.equals(colorStr)) {
                yourTextView.setTextColor(color.name);
            }
        }
        

        【讨论】:

          【解决方案4】:

          试试这个代码:

          if(tv.getTextColors().getDefaultColor() == colors[0])
              tv.setText(words[0]);
          else if(tv.getTextColors().getDefaultColor() == colors[1])
              tv.setText(words[1]);
          else if(tv.getTextColors().getDefaultColor() == colors[2])
              tv.setText(words[2]);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-01-12
            • 2012-07-20
            • 2012-06-09
            • 1970-01-01
            • 2014-05-13
            • 2016-01-04
            相关资源
            最近更新 更多