31978


androidのアプリを作っていて、color.xmlを作りそこに16進のカラーコードで好きな色を定義しました。  
それらをテキスト等の色に設定したのですが、アプリ起動時には全て黒ないしはグレーになってしまいます。  
元からあるColor.BLUEなどを入れると正常に青く表示されます。  
RGBをべた打ちする方法もありますが、それだといちいち面倒くさくて出来ません。  
元からある色以外を使う正しい方法はありますでしょうか。

EclipseでAndroid6.0を対象としています。  
デバイスはXperia Z3 Tablet Compactです。


CC BY-SA 3.0
2017-01-19T08:41:53.373
31977
2017-01-24T01:55:31.710
2017-01-24T01:37:53.503
76
20275
question
android
アプリ実行時に設定した色が再現されない


可能であれば実装しようとしているコードを提示されるとより良い回答が得られるかもしれません。

レイアウトファイル上で設定したいのであれば、以下のように指定することで可能です。

[code]

    <TextView
        android:id="@+id/textview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/*1" />
    
[/code]

プログラム上で設定したいのであれば、以下で指定することが可能です。

[code]

    int colorValue = getResources().getColor(R.color.*1);
    textView.setTextColor(colorValue);
    
[/code]

*1 color.xmlで定義されたリソース名

* * *

追記

API Level 23ではgetColor(int)は非推奨メソッドとなっていました。  
<https://developer.android.com/reference/android/content/res/Resources.html#getColor(int)>

APIリファレンスにはgetColor(int, Resources.Theme)を使用するように記載されています。  
そのため、API Level 23以降で使用される場合は、getColor(int, Resources.Theme)を使用したほうが良いようです。  
<https://developer.android.com/reference/android/content/res/Resources.html#getColor(int,%20android.content.res.Resources.Theme)>  
Resources.ThemeはActivityが継承しているContextThemeWrapperにgetTheme()というAPIがありました。

[code]

    int colorValue = -1;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        colorValue = getResources().getColor(R.color.*1, getTheme());
    }else {
        colorValue = getResources().getColor(R.color.*1);
    }
    textView.setTextColor(colorValue);
    
[/code]


CC BY-SA 3.0
2017-01-19T08:57:32.703
31978
2017-01-24T01:55:31.710
2017-01-24T01:55:31.710
20272
20272
31977
answer