【開発】Androidアプリでボタンの色を動的に変更するには?実例も交えてわかりやすく解説します【button】

header13

まず初めに

みなさん、こんにちは。はねすけと申します。

今回は内容は「Androidアプリでボタン色を動的に変更」です。

聞いただけだと非常に簡単で初歩的な話のように感じますが、意外とハマってしまったため、ほかの方の参考になるのではないかと思い記録を残しておきたいと思います。
それでは早速行ってみましょう!

こんな方はぜひ読んでみてくださいね

・Androidアプリの開発をこれから行う方

・Androidアプリ開発において、ボタンの制御につまづいている方

前提情報の整理

header13-1

Android Studio

まずは前提として、今回の記事で関係のある事柄を整理しておきます。特に必要ないという方は本題である次の章まで飛ばしていただければ幸いです。

今回ご紹介しておくのは「Android Studio」です。
Android Studioとは、Googleが提供しているAndroidアプリケーションを作成するためのIDE(統合開発環境)です。
簡単に言うと、Androidのスマホアプリなどを開発するためのソフトウェアです。

世の中には様々な種類のIDEが存在しています。
しかし、ことAndroidアプリの開発ということに関しては、Androd Studioが最適なIDEではないかと思います。

目的に合わせたIDEを使うと開発が円滑に進みますね。

Android Studioのダウンロード・インストール

まだ使ったことがないという方のために、簡単ではありますがインストール方法も確認しておこうと思います。
インストールについてはインストーラを使用して非常に簡単に行えます。以下のリンクよりインストーラを取得していきましょう。※ここではWindowsにインストールしていこうと思います。

install_1
① 上記のリンクよりダウンロードサイトに移動しましょう。サイトで下の方にスクロールすると、上画像のように「Android Studioのダウンロード」という項目があります。そこでまずはインストーラをダウンロードします。(ここではWindows用に赤枠のインストーラをクリックします)
install_2
② ダウンロード前に利用規約の確認画面が開きます。問題なければチェックボックスにチェックを入れ、「ダウンロードする」ボタンをクリックしましょう。
install_3
③ インストーラをダウンロードしたら、さっそく起動していきましょう。上画像のような画面が起動しますので、「Next>」ボタンを押してください。
install_4
④ インストールするコンポーネントを指定する画面です。「Android Virtual Device」にチェックを入れておきましょう。
※「Android Virtual Device」は仮想的なスマートフォンデバイスをAndroid Studio上で起動するためのものです。これを利用して、スマートフォンがなくてもつくったアプリがスマートフォン上でどのように見えるか確認しながら開発を進めることができます
⑤ 「Next>」ボタンを押してください。
install_5
⑥ Android Studioのインストール先を指定します。特に変更しなくても問題ありませんが、任意で変更も可能です。
⑦ 「Next>」ボタンを押してください。
install_6
⑧ Android Studioのショートカットを作成するか指定する画面です。特に指定は不要かと思われます。「Install」ボタンを押してください。
install_7
⑨ インストールが開始されますので、終了まで待ちましょう。
install_8
⑩ 無事にインストールが完了したら「Next>」ボタンが押せるようになりますので、押してください。
install_9
⑪ 「finish」ボタンを押してインストーラを終了してください。「Start Android Studio」のチェックボックスにチェックが入っていると、その後自動的にAndroid Studioが起動されます。

Androd Studioの起動

無事インストールできましたので、実際に簡単にですがAndrod Studioを操作してみましょう。

testplay_1
① 初めて起動すると上画像のような画面が表示されます。「Next>」ボタンを押してください。
testplay_2
② セットアップの種類を選択していきます。今回は特にこだわりはないので「Standard」の方を選んでいます。
③ 「Next>」ボタンを押してください。
testplay_3
④ Android Studioのスタイルを選択します。お好きな方を選択しましょう。
⑤ 「Next>」ボタンを押してください。
testplay_4
⑥ Andoroid SDK等、Android Studioの開発で必要となるコンポーネントのインストールを指定する画面です。
詳しい説明は省略しますが、SDKとは「Software Development Kit」の略です。様々な機能をひとまとめにし、最小限の労力でアプリケーションの開発を行うことができるようにしたパッケージのことです。
⑦ 「Next>」ボタンを押してください。
testplay_5
⑧インストール内容・サイズの確認画面です。問題なければ「Next>」ボタンを押してください。
testplay_6
⑨ SDKのライセンスの確認画面です。赤枠のようにライセンスごとに承認する必要があります
⑩ 承認できましたら「Finish」ボタンを押してください。
testplay_7
⑪ コンポーネントのインストールが開始されます。終了すると「Finish」ボタンが押せるようになりますので押してください。
testplay_8
⑫ ようやくAndroid Studioデフォルトスタート画面にやってきました。ここでプロジェクトを指定したり、新規で作成したりすることができます。
まだ何もプロジェクトがない状態ですので、「New Project」を選択し、プロジェクトを作成していきます。
testplay_9
⑬ 様々なテンプレートを選択することができます。作りたいアプリに近しいものを選ぶと開発が効率的ですね。ここでは「Empty Compose Activity」を選択していきます。
testplay_10
⑭ プロジェクト名やSDKバージョンを指定する画面です。ここでは「MyTestApp」というプロジェクト名を指定しました。
⑮ 指定できましたら「Finish」ボタンを押してください。
testplay_11
⑯ プロジェクトの起動に必要なモジュールのインストールが開始されます。終了すると「Finish」ボタンが押せるようになりますので押してください。
testplay_12
⑰ 無事にプロジェクトを作成し、デフォルトの管理画面まで来ることができました!

ここでは起動してアプリ開発画面を起動するまでの解説に留めていますが、デバッグ方法など開発に関してもっと具体的に知りたいという方のために公式サイトでトレーニングを提供していますので、ぜひなれる意味でも試してみると良いかもしれません。

テキストの場合のColor

header13-2

Android Studioの概要を確認できたところで、本題である「ボタンの動的な色設定」に関する注意点に入っていきましょう。
ちなみに言語はJavaでしたが、レイアウト側の処理の話のためあまり関係ないと思われます。

まずは比較対象としてテキストの場合を見ていきたいと思います。
レイアウト上にテキストを配置するには「TextView」を使用しますね。
この辺は本当の基礎の基礎なので特段説明することはないかと思います。(知らない方はググってくださいね)

XML
<TextView
   android:id="@+id/text_test"
   android:background="#FFFF00"
   android:text="test"
   android:textColor="#F44336"/>

「.xml」ファイル上で上のような記載ですね。
テキストの場合の色の変更は何も悩むことはありません。直感的に目につくプロパティをいじるだけで変更ができます。

背景色であれば「android:background」を変更し、文字色であれば「android:textColor」を設定することで、任意の色で表示することができるでしょう。

ボタンの場合のColor

header13-3

一筋縄にはいかないボタンの取り扱い

ここからが本題です。テキストの際には簡単に色を変更できましたが、ではそれがボタンの色となるとどうすれば良いのでしょうか。

XML
<Button
        android:id="@+id/button_test"
        android:onClick="countUp"
        android:text="test_button" />

ボタンは簡単に書くと上記のような記載の仕方をしますが、そのほかにどのようなプロパティを設定すれば良いでしょうか?
まず浮かぶのはテキストと同じように「android:background」を設定してみます。

XML
<Button
        android:id="@+id/button_test"
        android:background="#FFFF00"
        android:onClick="countUp"
        android:text="test_button" />

こんな感じですね。これでデバックしてみましょう。
……なぜか色が変わりません。

Googleの公式の資料を探しましたが、現時点では関連してそうなものは見つけられませんでした。
ともかく現時点においては有効な設定方法でないのは間違いありません。

ボタンの場合の2つのbackground

結論からお伝えしますと、android:backgroundではなく「android:backgroundTint」というプロパティを設定する必要があります。

XML
<Button
        android:id="@+id/button_test"
        android:backgroundTint="#F44336"
        android:onClick="countUp"
        android:text="test_button" />

こんな感じです。
何が違うのかと言えば、background⇒そもそもの色・backgroundTint⇒色合い調整につかう色というニュアンスのようですが、明確なことは調べ切れておりません…

ともかくボタンの色を設定するのは「backgroundTint」を設定するのが正しいです。

注意すべきは、「background」と「backgroundTint」両方設定してもいけないという点です。
「backgroundTint」だけを設定してください
そうしていなければ、ボタンの色を後ほど動的に変更することができないのです。(これまたなぜそうなのかという根本原因は調べ切れていませんが…)

ちなみにJava側でボタン色を変更する際には以下のような書き方をします。参考までに。

Java
//ボタンの宣言
private Button mBtnTest;
mBtnTest = (Button)findViewById(R.id.button_test);

//色を黄色に変更
mBtnTest.setBackgroundTintList(ColorStateList.valueOf(Color.YELLOW));

ただ、これもあくまで現時点でのお話です。
また未来では正しい記載の仕方は変わっている可能性は十二分にあります。
ですので、参考資料を探す際にはできるだけ日付が今に近い資料を見るようにしてくださいね。

まとめ

いかがだったでしょうか?

本日お伝えしたかった内容を簡単にまとめると以下のようになります。

ぜひ何らかの形でお役に立てれば幸いです。

それでは次の記事でまたお会いしましょう♪

本日のまとめ

・Andoroid Studioでボタンの色を設定するには「backgroundTint」を設定しましょう

・backgroundは無視して、backgroundTintだけを設定しましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です