サイト移転のお知らせ:http://techbooster.org/に移転しました

テーマを使ってレイアウトを定義する

8月 8, 2010   //   by kseto   //   ユーザインターフェース  //  1 Comment

スタイルと同様の機能にテーマというものがあります。
テーマも、ビューやウィンドウの属性値をまとめて設定する機能なのですが、
テーマはスタイルのように個々のビューに対して設定するのではなく、
アプリケーションやアクティビティ全体に対して設定を行います。

詳細は続きからどうぞ

スタイルの定義

テーマの定義はスタイルと違いありません。
スタイルと同じように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()メソッドを呼ばないと
テーマは設定されないので気をつけて下さい。

関連する記事:

Sponsored Link

1 Comment

  • [...] テーマを使ってレイアウトを定義する [...]

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です