今まででも未指定の場合はTheme.Black、Android 3.0以降であればTheme.Holoなどが適用されていましたが、Android端末ごとに適用されるテーマがカスタマイズされているなど、アプリケーション側ではレイアウトを制御しにくかったのが現状です。
今回、Android 4.0からTheme.DeviceDefaultが追加されたことで、端末メーカーが、自分の端末ごとにテーマを用意することになります。アプリケーションでThemeを指定しなければTheme.DeviceDefaultが適応されます。ユーザーにとっては使い慣れた端末のテーマが適応されることになり、統一感が向上します。
Android 4.0でのTheme.DeviceDefaultなど、Themeの指定方法は以下の通りです。
テーマの指定方法は続きから。
テーマを設定する
Themeの設定はAndroidManifest.xmlのActivity要素の属性値を追加します。
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.techbooster.sample.systemthemes" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".SystemThemesActivity" android:theme="@android:style/Theme.Light" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Theme.DeviceDefaultを利用するには、6行目、minSdkVersionを14(Android 4.0)で指定します。
targetSdkVersionを14以上にしてもTheme.DeviceDefaultがデフォルトテーマ(記述を省略した際に適応されるテーマ)として設定されます。
9行目:希望のテーマがある場合は、android:theme属性としてテーマを設定します。
9行目のコードを消去すれば、Theme.DeviceDefaultが適用されます(6行目のminiSdkVersionを指定したおかげですね)
テーマを選ぶ
以下は、Android 4.0以降の基準となるテーマをエミュレータからキャプチャしました。UIパーツの表示されかたの確認やUI検討などで見比べる際に便利です。
Theme.DeviceDefault(Black)
Theme.DeviceDefault.Light
アイコン、アプリケーションのタイトルが強調されています。また色の基調が白に変更されています。
Theme.DeviceDefault.Wallpaper
Theme.Black
Android 2.3でおなじみの黒を基調としたテーマです。
Theme.Light
Android 2.3でおなじみの白を基調としたテーマです。
タイトルバーを表示しないTheme.Black.NoTitleBarや、Android3.0のレイアウトを踏襲するTheme.Holoなどいろんなテーマがあります、アプリケーションのみならず、ダイアログ向けのテーマTheme.Dialogなども多数用意されています。
テーマを利用することで統一感が向上します。是非、作りたいアプリ、コンポーネントにあわせて利用してください。
以上、お疲れ様でした!