4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

androidでのリソースIDでの色と、16進数での色

Posted at

androdアプリを作っていて、色に関してハマったことを示します
*注: リファレンス見たらすごく当たり前のことですが、ご了承ください

##setBackgroundResourceとsetBackgroundColorの違いについて
まず、動的にViewの色を変えたいと思い、colors.xmlに記載したものを参照して普段は

sample.kt
view.setBackgroundResource(R.color.blue)

としていましたが、一度

sample.kt
view.setBackgroundColor(R.color.blue)

こちらを使ってみると
NullPointerと怒られました

なんだこれはと公式リファレンスを参照してみると、一目瞭然
###setBackgroundResourceは引数にリソースID
###setBackgroundColorは引数に16進数のカラーコード
を受ける形となっていました
リソースIDもconstantな数値としてRクラスに保存されており、同じIntなのでビルドしてみるまで気づきませんでした。

これに加えて

sample.kt
ContextCompat.getColor(context, R.color.blue)

というものがありました。
これも、getColorだから色のリソースIDを返してくれるのかと思い込んでいましたが、16進数
AARRGGBB (AA:透明度)
を返していました

つまりまとめると、

メソッド 引数 返り値
setBackgroundColor 16進数のカラーコード void(Unit)
setBackgroundResource リソースID void(Unit)
ContextCompat.getColor context, リソースID 16進数のカラーコード

以上、簡単なまとめ記事でした。
改善点や、誤解を招く表記などございましたらお教えください。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?