setTextColor取决于来自数组的随机字符串 - Android

时间:2016-05-29 16:44:29

标签: java android arrays random

我有一个带有颜色名称的String数组和一个带颜色的数组:

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

我的TextView被随机设置为其中一个单词,现在我想将文本颜色设置为黄色(如果选择了黄色等)。我用if语句尝试了这个,但它保留了只显示黑色字样。

4 个答案:

答案 0 :(得分:0)

1)检索TextView具有的单词:

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

2)获取chosenWord中的words位置:

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吗?在需要映射具有特定值的键时,可以在这种情况下使用它们。

答案 1 :(得分:0)

你可以使用模型对象。 E.g。

 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) };

通过这种方式,您可以轻松访问与颜色相关联的名称

答案 2 :(得分:0)

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

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);
    }
}

答案 3 :(得分:0)

试试这段代码:

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]);