web-dev-qa-db-ja.com

リソースIDではなく解決された色

最近、私のコードにリントエラーが表示されました:

ここでリソースIDの代わりに解決された色を渡す必要があります:getResources()。getColor(R.color.maps_list_background_color)
MyClass.Java/myapp/Android/maps line 107 Android Lint Problem

私は答えがエラーにあることを解決する方法を知っています、問題は、彼らがリンターにこのエラーを追加した理由がわからないということです。

40
Leoz

整数の形式で色を取るメソッドには、実際の色リソースIDではなく、RGBトリプルを渡す必要があります。 getResources.getColor(resource)を呼び出す必要があります。

呼び出す関数は、色リソースのIDだけでなく、RGBトリプルである整数を予期しています。色リソースIDは依然として整数ですが、RGBトリプルとして使用された場合に期待する色を生成しません。色に適切なRGBトリプルを渡すには、getResources().getColor(R.color.example_color)呼び出しで解決する必要があります。

45
ter0

私はまだGoogleでこれを見つけており、廃止されているので、これを行う現在の方法を共有したいと思いました。

check getResources()。getColor()は非推奨

ContextCompat.getColor(context, R.color.color_name)
40

注釈を使用する@ColorIntこれが色参照IDではなく色であることを確認します。

参照: Android.support.annotation.ColorInt

6
Maher Abuthraa

getResources().getColor()は非推奨であるため、色を取得するにはこれを行う必要があります。

int color = ContextCompat.getColor(getContext(),your_color_id);

これで、現在のコンテキストに対して色が設定されました。次を使用して色を設定します。

your_view.setBackgroundColor(color);
5
MistNewt

私については、それは非常に愚かな警告です。

私は関数を持つ独自のクラスを持っています:

public static final void setBackgroundColor(View v, int id) {
// Here I get color by id from resources and setBackgroundColor of this color.
}

とにかく、setBackgroundColorを呼び出そうとすると、警告が表示されます。しかし、なぜ?

それで、私は簡単にしました:setBackgroundColorの名前をsetBackgroundColorrに変更します。

関数名で名前colorが見つかった場合、この警告がアクティブになります。

そして、はい、名前setColorBackgroundやその他の名前は好きではありません:-)

4
Yura Shinkarev