Gradleファイルで:buildToolsVersion "22.0.1"
、targetSdkVersion 22
を使用しています。
有用なgetResources().getColor(R.color.color_name)
は推奨されないことがわかりました。
代わりに何を使うべきですか?
最善の方法は次のようにすることです。
ContextCompat.getColor(context, R.color.color_name)
これにより、マシュマロ2パラメータ法またはマシュマロ前法が適切に選択されます。
まあそれはAndroid Mで廃止予定なので、あなたはAndroid M以下のために例外を作らなければなりません。 getColor
関数に現在のテーマを追加するだけです。現在のテーマはgetTheme()
で取得できます。
これは断片的なトリックをするでしょう、あなたは現在のコンテキストを保持するgetActivity()
をgetBaseContext()
、yourContext
などに置き換えることができます。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
yourTitle.setTextColor(getActivity().getResources().getColor(Android.R.color.white, getActivity().getTheme()));
}else {
yourTitle.setTextColor(getActivity().getResources().getColor(Android.R.color.white));
}
* p.s:色はMでは廃止予定ですが、drawableはLでは廃止予定です
Support V4ライブラリの一部であるContextCompat.getColor()を使用する必要があります(したがって、これはすべての以前のAPIで機能します)。
ContextCompat.getColor(context, R.color.my_color)
ドキュメントの中で指定されているように、 "Mで開始すると、返された色は指定されたコンテキストのテーマに合わせてスタイルされます"。 SO心配する必要はありません。
次のコードをアプリのbuild.gradle内のdependencies配列に追加することで、Support V4ライブラリを追加できます。
compile 'com.Android.support:support-v4:23.0.1'
便利なgetResources()。getColor(R.color.color_name)は推奨されていません。
ドキュメント によると、API Level 21では非推奨ではありません。
M Developer Previewでは、 は で非推奨です。ただし、置換メソッド(カラーリソースIDとResources.Theme
オブジェクトを受け取る2つのパラメータを持つgetColor()
)は、M Developer Previewでのみ利用できます。
したがって、今のところ、単一パラメータのgetColor()
メソッドを使い続けます。今年後半には、Android Mデバイスで2パラメータgetColor()
メソッドを使用することを検討し、古いデバイスでは廃止予定のシングルパラメータgetColor()
メソッドに戻ります。