テーマを自作するには
androidでは、ApplicationまたはActivity毎にテーマを適用することで、画面のルックアンドフィールを変更することができます。
標準では色に関するテーマはTheme.LightとTheme.Blackの二つくらいしかなくて、ちょっとさみしい感じです。
テーマを自作する場合、res/values/style.xml にstyleタグで定義します。parentで親のテーマを指定できるので、変更したい部分の差分だけを定義することができます。次の例では、Theme.LightとTheme.Blackをもとに、背景色をカスタマイズしたテーマを定義しています。
res/values/color.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="DarkBlue">#000066</color> <color name="LightYellow">#FFFFE0</color> <color name="FloralWhite">#FFFAF0</color> </resources>
res/values/style.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="DarkBlue" parent="@android:style/Theme.Black"> <item name="android:windowBackground">@color/DarkBlue</item> <item name="android:colorBackground">@color/DarkBlue</item> </style> <style name="LightYellow" parent="@android:style/Theme.Light"> <item name="android:windowBackground">@color/LightYellow</item> <item name="android:colorBackground">@color/LightYellow</item> </style> <style name="FloralWhite" parent="@android:style/Theme.Light"> <item name="android:windowBackground">@color/FloralWhite</item> <item name="android:colorBackground">@color/FloralWhite</item> </style> </resources>
このカスタムテーマをAndroidManifest.xml で指定する場合は:
<activity android:name=".wordActivity" android:theme="@style/DarkBlue"/>
プログラム中でテーマを動的に指定する場合は:
@Override protected void onCreate(Bundle savedInstanceState) { // カスタムテーマの適用。super.onCreate()の前に呼び出すこと! setTheme(R.style.DarkBlue); super.onCreate(savedInstanceState); setContentView(R.layout.word); }