【Kotlin/Android Studio】Viewの背景色を変更する方法!setBackgroundColor

この記事からわかること

  • Android Studio/KotlinView(Widgets)の背景色変更する方法
  • background属性backgroundTint違い
  • setBackgroundColorメソッド使い方
  • setBackgroundResourceメソッドの使い方
  • backgroundTintListメソッドの使い方
  • リソース指定しているカラー適応するには?
  • ContextCompat.getColorメソッドの使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

公式リファレンス:toInt

環境

View(Widgets)の背景色を変更する方法

AndroidアプリのView(Widgets)の背景色を変更するにはandroid:background属性に変更したいカラーを指定します。渡せる値は16進数(#XXXXXX)やリソースに定義しているカラーです。

<EditText
  android:id="@+id/edit_text"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="#e7e7e7"
  android:ems="10"
  android:inputType="text"
  android:padding="5dp"
  android:text="Name" />
【Kotlin/Android Studio】Viewの背景色を変更する方法!setBackgroundColor

またカラーコードは16進数では0〜Fまでの6文字で表現しますが、以下のように8文字で表現した場合前の2つは透明度の設定値になります。FFが透明度0で00が完全に透明になります。

android:background="#FF000000"

リソースファイルから指定する

カラーコードはリソースファイルから指定するには「res」>「values」>「colors.xml」の中に定義を増やすか新規でカラーコード用のリソースファイルを用意して指定します。


<resources>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
</resources>

指定する際は@color/[nameで指定した文字]のようにすることで適応されます。

android:background="@color/black"

Buttonの場合はbackgroundでは変更できずbackgroundTintを使用する必要があるようです。

backgroundとbackgroundTintの違い

background属性とbackgroundTint属性の違いは以下の通りです。

background

background属性はViewの背景を指定する。Colorコードの指定、ColorリソースまたはDrawableリソースが指定できる。

backgroundTint

backgroundTint属性はViewの背景色を指定する。background属性にDrawableリソースを指定した場合、そのDrawableの色をbackgroundTintで指定した色に変更することができる。

コードから動的に背景色を変更する

Buttonの背景色を動的にコードをから変更するにはsetBackgroundColorメソッドに引数にColorクラスを渡します。もともと定義されているカラーを呼び出すことやrgbメソッドを使用してカラーコードを指定することも可能です。

editText.setBackgroundColor(Color.GREEN)
editText.setBackgroundColor(Color.rgb(0, 0, 0))

リソースファイルから指定する

リソースファイルのカラーを取得するにはsetBackgroundColorメソッドを使用する前にContextCompat.getColorメソッドを使用して実際の色値を取得する必要があります。そのままリソースIDを指定してもうまく動作しないのて注意してください。

val colorValue = ContextCompat.getColor(this, R.color.black)
editText.setBackgroundColor(colorValue)

editText.setBackgroundColor(R.color.black) // ×

setBackgroundResourceメソッド

setBackgroundResourceメソッドを指定することでリソースIDをそのまま指定することで背景色を変更することも可能です。ですがこの指定は正確にはdrawableリソースを指定する場合に使用するメソッドなので角丸など他の指定が崩れる可能性があるので注意してください。

editText.setBackgroundResource(R.color.black)

またbackgroundTintをXMLから指定している場合はリソースの背景色を変更する属性のためsetBackgroundResourceから指定している色は適応されません。

backgroundTintListメソッド

backgroundTintの値をKotlin側から変更するにはbackgroundTintListを使用します。単純にカラーコードやリソースを渡すのではなくContextCompat.getColorStateListで指定する必要があります。

editText.backgroundTintList =
                ContextCompat.getColorStateList(this.requireContext(), R.color.black)

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index