My Photo

« 「月刊ヒーローズ」はパチンコホールでも売ってる | Main | 今度からはTSUTAYAで借りる »

November 29, 2011

Androidアプリ開発メモ046:スタイルとテーマ

スタイルとテーマ

Androidではアプリやビューに統一したフォーマットを適用するためにスタイルとテーマが用意されている。

スタイル
ビューに個々にセットするフォーマット属性のセット。レイアウトファイルで設定する。
テーマ
アプリケーション全体または個々のアクティビティにセットするフォーマット属性のセット。AndroidManifest.xmlで設定する。

用意されているスタイル(一部)

TextAppearance 文字色白。文字サイズは小と中の間。
TextAppearance.Inverse 文字色黒。
TextAppearance.Small 文字サイズ小。
TextAppearance.Mediaum 文字サイズ中。
TextAppearance.Large 文字サイズ大。

「○○.Inverse」というスタイルは「○○の文字色反転版」ってことか?

用意されているテーマ(一部)

Theme.Black 背景が黒。テーマを指定しない場合と同じ?
Theme.Light 背景が白。
Theme.Dialog ダイアログっぽくなる。
Theme.NoDisplay
Theme.NoTitleBar タイトルバーなし
Theme.Translucent 背景が透明。タイトルバー付き。
Theme.Translucent.NoTitleBar 背景が透明。タイトルバーなし。
Theme.Translucent.NoTitleBar.Fullscreen 背景が透明。タイトルバーなし。ステータスバーもなし。

Theme.NoDisplayはどのようなテーマなのか不明。onCreate()は呼ばれているが画面の変化は一切ない。アクティビティ上にあるテキストビューやボタンも表示されない。
Theme.Translucentの場合は背景は透明だけがアクティビティは実際には存在していて、そのために後ろにある画面(ホーム画面など)は操作できないが、Theme.NoDisplayでは表示されている画面を操作できるのでアクティビティが画面上には存在していないと思われる。またバックキーを押すと、しばらくすると「<アプリケーション名>は応答していません。」というエラーのダイアログが出る。

下のスクリーンショットは"Theme.Dialog"。 Theme_dialog

独自のスタイル・テーマの指定

独自のスタイル・テーマを定義して使うこともできる。
テーマの定義は /res/values/style.xml に記述する。
以下は独自スタイル・テーマの例。

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="SpecialText" parent="@android:style/TextAppearance.Medium" >
    <item name="android:textSize">18sp</item>
    <item name="android:textColor">#FF00FF00</item>
  </style>

  <drawable name="translucent_background">#DDFF0000</drawable>
  <style name="Theme.TranslucentRed" parent="android:style/Theme.Translucent">
    <item name="android:windowBackground">@drawable/translucent_background</item>
  </style>
</resources> 

"SpecialText"は"TextAppearance.Medium"を継承したスタイルで文字色が緑。
"Theme.TranslucentRed"は"Theme.Translucent"を継承したテーマで背景が"translucent_background"という上の行で定義してあるdrawableである。

スタイルの指定

スタイルはレイアウトファイルでビューの要素にstyle属性を追加して設定する。 #android:style属性ではない。

style="@android:style/<標準で用意されているスタイルの名前>"
style="@style/<独自のスタイルの名前>"

テキストビューの文字サイズを中に設定する場合は以下のようになる。
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    style="@android:style/TextAppearance.Medium" />

テーマの指定

テーマはAndroidManifest.xmlでapplication要素、activity要素にandroid:theme属性を設定する。
application要素の属性の場合はそのアプリケーション全体にテーマがセットされる。
activity要素の属性の場合はそのアクティビティにテーマがセットされる

android:theme="@android:style/<標準で用意されているテーマの名前>"
android:theme="@style/<独自のテーマの名前>"

アクティビティに対して設定する場合は以下のようになる。
<activity
    android:label="@string/app_name"
    android:name=".ThemeExample"
    android:theme="@android:style/Theme.Translucent" />

参考:
6.8 スタイルとテーマの適用 - ソフトウェア技術ドキュメントを勝手に翻訳
Androidアプリ全体で文字色や背景色を統一させる方法(Theme/テーマ) | mucchinのAndroid戦記
Androidメモ
[音量設定アプリ]第6回 アプリのデザイン(テーマ)を変更 | Android Techfirm Lab

« 「月刊ヒーローズ」はパチンコホールでも売ってる | Main | 今度からはTSUTAYAで借りる »

Androidアプリ開発」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/53366568

Listed below are links to weblogs that reference Androidアプリ開発メモ046:スタイルとテーマ:

« 「月刊ヒーローズ」はパチンコホールでも売ってる | Main | 今度からはTSUTAYAで借りる »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof