2016-05-29 19 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)wordschosenWord位置を取得:

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を知っていますか?このような場合には、特定の値でキーをマップする必要がある場合に使用できます。

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

のように、簡単に使用すると、1つのアレイと管理が容易を持ってこの方法では、色

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]); 
関連する問題