2013-05-18 39 views
0

在我的应用程序我让用户选择他想使用哪个主题(黑暗或光明)。该主题在我的styles.xml定义如下:PreferenceActivity的主题问题

<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> 

黑暗的主题是正确的应用无处不在。

光的主题是除了动作条的文本颜色OK(它是黑色的,而不是白色)和我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); 

     ... 
    } 
} 

我已经检查了正确的主题choosen。

目标和Min API版本是17,如果这是非常重要的。

有人可以帮我吗?

回答

1

移动setTheme之前super.onCreate(savedInstanceState);所以你的代码如下所示:

public class SettingsApp extends PreferenceActivity implements OnSharedPreferenceChangeListener, OnPreferenceChangeListener { 

public void onCreate(Bundle savedInstanceState) { 
    if (TimeMateActivity.theme.equals("0")) { 
     setTheme(R.style.Theme_Flo); 
    } else { 
     setTheme(R.style.Theme_Flo_Light); 
    } 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.layout.settings); 

    ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    ... 
} 
} 
+0

THX,即伟大工程。而对于标题颜色问题,我发现这个解决方案http://stackoverflow.com/questions/5861661/actionbar-text-color – user1202535