ページ

2013/07/07

[Android]古いスタイルのダイアログが出ない透明なActivityのテーマ

最近まで画面を表示しない透明な Activity は
@android:style/Theme.Translucent で良いと思っていました。
[Android]Activityを非表示にする | DevAchieve

ほとんどの場合それでも問題なかったのですが、
その透明 Activity からダイアログを表示した際に
Android 3.0以上なのに Holo テーマとかじゃなくて
Android 2.x 系のテーマのダイアログが表示されてしまいました。

ダイアログ自体のテーマに Holo とか設定すればいいだろうとか思ったけど
なぜかダイアログで setTheme するとダイアログの枠の外に背景がついたりしてダメでした。

そこで以下のように透明のテーマ自体を修正したら Android 3.0以上で Holo 系のダイアログが表示されました。
<style name="Theme.Transparent" parent="android:Theme.Light.NoTitleBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>
<style name="Theme.Transparent" parent="android:Theme.Holo.Light.NoActionBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>
参考: ネタ帳 A.B.C: いまどきの透明なActivityのつくり方
values-v11 と values-v14 と書かれているけど values-v11 と書けば API LEVEL 11 以上となるので
同じ物を values-v14 に用意する必要はないです。
参考: Providing Resources | Android Developers