hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

Android Programming TIPS(4)

テーマを自作するには

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);

	}