我有一个带有颜色名称的String数组和一个带颜色的数组:
String[] words = new String[] {"yellow", "white", "green"};
int[] colors = new int[] {Color.YELLOW, Color.WHITE, Color.GREEN};
我的TextView
被随机设置为其中一个单词,现在我想将文本颜色设置为黄色(如果选择了黄色等)。我用if
语句尝试了这个,但它保留了只显示黑色字样。
答案 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]);