タイトルバーやステータスバーの影を消す
背景を白くするには theme を AndroidManifest.xml
android:theme="@android:style/Theme.Light"
みたいに指定すれば ok。結果はこんな感じになる。
でも、よくみると、ヘッダーのところの影が気になる。
これは
requestWindowFeature(Window.FEATURE_NO_TITLE);
などとして、タイトルバーを消しても出てくる。
この影を消す方法を探しても、すぐに見つけられなくて苦労したので日記に書いておく。
解決方法は自作のテーマを作って、そのテーマで android:windowContentOverlay を設定するだけ。
まず styles.xml で、オリジナルのテーマを作る。白い背景が好きなら Theme.Light を parent に指定するのが簡単ですな。
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyTheme" parent="@android:style/Theme.Light"> <item name="android:windowContentOverlay">@null</item> </style> </resources>
で、このテーマを AndroidManifest.xml で、Application か Activity に設定する。とりあえず今回はapplicationに設定してみる。
<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/MyTheme"> 〜ここにactivityの設定とかが入る〜 </application>
これで実行してみる。
影が消えてすっきり!!
画面の隅々まで、自分の思い通りのデザインにしたいときには必要だと思う。
まー、Android 1.6 だと色数が16bitしか出ないから残念なんだけど...。
この答えにたどり着いたときの流れ。
- SDK の platforms のデフォルトで適当に grep
- "Theme.Light" で grep して、"Theme.Light.NoTitleBar" や "Theme.Light.NoTitleBar.Fullscreen" の存在を知る
- "Theme.Light.NoTitleBar" では影が消えなかったが、"Theme.Light.NoTitleBar.Fullscreen" だと影が無くなった
- "Theme.Light.NoTitleBar.Fullscreen" の設定を見る
- "android:windowFullscreen" と "android:windowContentOverlay" が設定されている
- それぞれ設定した場合と、そうでない場合の動作を確認
- 確定