私のアプリでは、ユーザーが使用したいテーマ (暗いまたは明るい) を選択できるようにしています。テーマは、styles.xml で次のように定義されています。
<style
name="but"
parent="android:style/Widget.Holo.ActionButton">
</style>
<style
name="bar"
parent="android:style/Widget.Holo.ActionBar.Solid">
</style>
<style
name="Theme_Flo"
parent="android:Theme.Holo">
<item name="android:buttonStyle">@style/but</item>
<item name="android:actionBarStyle">@style/bar</item>
</style>
<style
name="Theme_Flo_Light"
parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:buttonStyle">@style/but</item>
<item name="android:actionBarStyle">@style/bar</item>
</style>
暗いテーマはどこでも正しく適用されます。
アクションバーのテキストの色(白ではなく黒)と、メインの設定画面といくつかの内部設定画面で構成される私の設定アクティビティを除いて、ライトテーマは問題ありません。内側の画面には正しいテーマがあります (アクションバーのテキストの色を除く)。しかし、外側の設定画面 (メイン画面) は背景が暗く、テキストの色も暗いです。したがって、テキストの色は正しく選択されていると思いますが、背景色は正しく選択されていません。Android:background を介して settings.xml で背景色を設定しても効果はありません。内部設定画面で黒い画面に関する投稿をいくつか見つけましたが、この方法ではありません。
テーマは onCreate メソッドで次のように適用されます。
public class SettingsApp extends PreferenceActivity implements OnSharedPreferenceChangeListener, OnPreferenceChangeListener {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(TimeMateActivity.theme.equals("0")) {
setTheme(R.style.Theme_Flo);
}else{
setTheme(R.style.Theme_Flo_Light);
}
addPreferencesFromResource(R.layout.settings);
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
...
}
}
正しいテーマが選択されていることを確認しました。
これが重要な場合、ターゲットと最小 Api バージョンは 17 です。
ここで誰か助けてくれませんか?