在我的应用程序中,我让用户选择他想要使用的主题(深色或浅色)。主题在我的 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>
深色主题在任何地方都正确应用。
浅色主题是好的,除了操作栏的文本颜色(它是黑色而不是白色)和我的preferenceactivity,它由一个主preferencescreen 和一些内部preferencescreens 组成。内部屏幕具有正确的主题(操作栏文本颜色除外)。但外部偏好屏幕(主屏幕)具有深色背景和深色文本颜色。所以我猜文本颜色选择正确,但背景颜色没有。通过 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);
...
}
}
我已检查是否选择了正确的主题。
Target 和 Min Api 版本是 17,如果这很重要的话。
有人可以在这里帮助我吗?