スタイルと同様の機能にテーマというものがあります。
テーマも、ビューやウィンドウの属性値をまとめて設定する機能なのですが、
テーマはスタイルのように個々のビューに対して設定するのではなく、
アプリケーションやアクティビティ全体に対して設定を行います。
詳細は続きからどうぞ
スタイルの定義
テーマの定義はスタイルと違いありません。
スタイルと同じようにres/values/以下にxmlファイルを作成しそこに記述します。
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyStyle"> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> </style> <style name="MyStyle2" parent="@style/MyStyle"> <item name="android:textColor">#00FF00</item> </style> <style name="MyStyle3" parent="@style/MyStyle"> <item name="android:background">#ff0000</item> <item name="android:textColor">#ffffff</item> </style> </resources>
今回は例としてMyStyle3を設定してみたいと思います。
MyStyle3はMyStyleを継承しているので、
幅をfill_parent、高さをwrap_content、背景が赤色、文字色が白色、
という設定情報になります。
テーマの適用
テーマの設定はマニフェストファイルに記述する事で行います。
アプリケーションのすべてのアクティビティに対して
テーマを設定するにはマニフェストファイルに
applicationタグを使ってテーマ名を指定します。
<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/MyStyle3">
テーマをアプリケーションのアクティビティにのみ適用する場合は
activityタグでテーマ名を指定します。
<activity android:name=".StyleSample" android:label="@string/app_name" android:theme="@style/MyStyle3">
アプリケーションからテーマを設定する事もできます。
アプリケーション上でsetTheme()メソッドを使って設定します。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.MyStyle3); setContentView(R.layout.main); }
setContentViewメソッドを呼び出す前にsetTheme()メソッドを呼ばないと
テーマは設定されないので気をつけて下さい。