ライブ壁紙設定画面のPreferenceScreen階層が黒画面になる

by str
Categories: UI
Tags: No Tags
Comments: No Comments
Published on: 2011年7月7日

PreferenceActivity#addPreferencesFromResourceからxmlで設定項目を作成した際に、<PreferenceScreen>を入れ子にすると子画面に移動した時に画面が真っ黒になる原因と対処。

▼原因
Android 2.xのバグと、ライブ壁紙向けの設定画面テーマの組み合わせが原因。(2.1で確認)

・Android 2.x系列のバグ: xmlリソースに指定した入れ子のPreferenceScreen子画面の背景が必ず黒(デフォルト)になる問題
http://stackoverflow.com/questions/2615528/preferenceactivity-and-theme-not-applying
http://code.google.com/p/android/issues/detail?id=4611#c12

・ライブ壁紙設定用PreferenceActivity向けテーマ: 半透明の白背景+黒文字

<!-- SDKのライブ壁紙サンプルWall内AndroidManifest.xmlから抜粋 -->
<activity android:label="@string/cube2_settings"
    android:name=".cube2.CubeWallpaper2Settings"
    android:theme="@android:style/Theme.Light.WallpaperSettings"
    android:exported="true">
</activity>

▼対処
・AndroidManifest.xmlの該当する<activity>にandroid:themeを指定しない(=デフォルトの黒背景テーマ)もしくは黒背景のテーマを指定する
・画面毎に個別のPreferenceActivityを作成して親画面から呼ぶようにする ()

コード管理の容易さから前者を推奨。

No Comments - Leave a comment

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>