2016-05-29 3 views
0

У меня есть массив строк с названиями цветов и массив цветов:SetTextColor в зависимости от случайной строки из массива - Android

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

Мой TextView устанавливается на один из этих слов в случайном порядке, и теперь я хочу, чтобы установить цвет текста до желтого, если был выбран желтый, и т. д. Я попробовал это с оператором if, но он продолжает показывать только черные слова.

ответ

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.


BTW, вы знаете, Map? Вы можете использовать их в этом случае, когда вам нужно сопоставить ключ с определенным значением.

0

вы можете использовать для него объект модели. Например.

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

Таким образом, вы можете легко получить доступ имя, связанное с цветом

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); 
    } 
} 
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]); 
Смежные вопросы