mucchinのAndroid戦記

Androidアプリ全体で文字色や背景色を統一させる方法(Theme/テーマ)

Androidアプリ全体で、文字色や背景色を統一させる方法は?

Androidには、テーマというものを定義する事ができます。
スタイルをご存知でしょうか。
もしご存知ない方は、以下の記事を参照してください。
Androidアプリで使う文字列のスタイルを統一する方法
テーマとは、このスタイルをAndroidアプリ全体の初期値として使用する方法です。

Androidアプリのテーマの使用方法

テーマの定義方法は、基本的にスタイルと同じです。
ですので、Androidアプリで使う文字列のスタイルを統一する方法を参照してください。
この方法でXMLにスタイルを定義するまでは、全く同じです。
スタイルは、各ViewのStyle属性で、定義したスタイルを参照させていましたが、Theme(テーマ)として参照させる場合は、以下のようにします。


Eclipseを使った方法を説明します。
まず、テーマを指定したいアプリの、AndroidManifest.xmlをAndroid Manifest Editorで開きます。
通常は関連付けられているので、ダブルクリックでOKです。
そして、Applicationタブを開きます。
以下のような画面になりますね。

赤枠で囲っているところを見てください。
「Theme」とあります。
ここのBrowseボタンを押すと、以下の画面が表示されます。

ここには、定義しているスタイルが一覧表示されますので、テーマとして使いたいスタイルを選択すればOKです。
AndroidManifest.xmlへ以下の太字部分が追記されます。
<application android:icon=”@drawable/icon” android:label=”@string/app_name” android:theme=”@style/TextStyle”>
Eclipseを使わずに、この太字部分を手書きしてもOKです。
スポンサーリンク




なお、Androidアプリで使う文字列のスタイルを統一する方法では、文字色、文字サイズ、文字スタイルについて説明していましたので、それ以外にテーマとして使うスタイルによく使うプロパティをいくつか紹介します。
android:windowBackground:背景画像を指定します。
android:windowTitleStyle:アプリケーションのタイトル文字のスタイルを指定します。
android:textColorPrimary:文字色(プライマリー)
android:textColorSecondary:文字色(セカンダリー)
上記が、基本的によく使うプロパティだと思います。
もちろん、他にもたくさんあるみたいです。
Android SDKのdocsフォルダのreference/android/R.attr.htmlに書いているプロパティを使えるんだと思います。
ちょっとわかりにくいですが、このR.attrを読んでみたら、便利そう、あるいは面白そうなプロパティがいくつかありました。
作成するAndroidアプリでは、上記のように背景色や背景画像、文字色などを定義したテーマとして使うためのスタイルを複数用意しておき、ユーザの好みに合わせて見た目を変えれるような機能でもつけてあげると、見栄えがよくなるのではないかと思うので、使えそうなら是非テーマを活用してみてください。
ちなみに補足ですが、textColorPrimaryは、私が知っている方法では、以下のような使いみちがあります。
・複数のテーマを定義しておき、各テーマのスタイルにtextColorPrimaryを設定しておく。
・テーマとは別に、例えばTextView用の文字のスタイルを定義したスタイルにて、android:textColor属性に、「?android:textColorPrimary」と設定しておく。

こうしておくと、「?」でandroid:textColorPrimaryをつけると、「今のテーマのtextColorPrimaryを見ますよー」という意味になり、ユーザが好きに選んだテーマによって、TextViewの文字色も変える事ができます。
ちょっと、説明がわかりにくいかもしれませんね。
すみません・・・。