在运行时从Theme.AppCompat更改为Theme.AppCompat.Light.DarkActionBar

时间:2015-07-17 13:50:19

标签: android themes runtime android-appcompat

我的应用中有一个设置,用户可以在其中更改主题。可以通过导航抽屉访问设置,因为我想要一个“汉堡包菜单图标”,我不得不从我的基础活动中扩展AppCompatActivity。

我的styles.xml非常简单:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
<style name="DarkTheme" parent="Theme.AppCompat">
</style>

和我的onCreate方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    sharedPreferences.registerOnSharedPreferenceChangeListener(MainActivityTransmit.this);
    Theme = sharedPreferences.getString("theme_preference","1");

    switch(Theme) {
        case "AppTheme":
            setTheme(R.style.AppTheme);
            break;
        case "DarkTheme":
            setTheme(R.style.DarkTheme);
            break;
        default:
            break;
    }

    setContentView(R.layout.activity_main_transmit);

之前,当我只扩展Activity(并使用常规Material主题)时,这个工作正常。但是,现在当我扩展AppCompatActivity(并使用AppCompat主题)时,它不起作用。

文本颜色会根据我更改的主题而改变,但屏幕和操作栏的背景颜色与AndroidManifest中的背景颜色相同(在我的情况下为DarkTheme)。

为什么它突然变得与众不同只是因为我使用AppCompat并且如何修复它?

0 个答案:

没有答案