テーマを使ってレイアウトを定義する
|スタイルと同様の機能にテーマというものがあります。
テーマも、ビューやウィンドウの属性値をまとめて設定する機能なのですが、
テーマはスタイルのように個々のビューに対して設定するのではなく、
アプリケーションやアクティビティ全体に対して設定を行います。
詳細は続きからどうぞ
スタイルの定義
テーマの定義はスタイルと違いありません。
スタイルと同じようにres/values/以下にxmlファイルを作成しそこに記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <? 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タグを使ってテーマ名を指定します。
1 | < application android:icon = "@drawable/icon" android:label = "@string/app_name" android:theme = "@style/MyStyle3" > |
テーマをアプリケーションのアクティビティにのみ適用する場合は
activityタグでテーマ名を指定します。
1 | < activity android:name = ".StyleSample" android:label = "@string/app_name" android:theme = "@style/MyStyle3" > |
アプリケーションからテーマを設定する事もできます。
アプリケーション上でsetTheme()メソッドを使って設定します。
1 2 3 4 5 6 | @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.MyStyle3); setContentView(R.layout.main); } |
setContentViewメソッドを呼び出す前にsetTheme()メソッドを呼ばないと
テーマは設定されないので気をつけて下さい。
One Comment