如何更改PreferenceActivity的主题(或样式)

时间:2014-05-04 14:52:51

标签: android android-holo-everywhere holoeverywhere

我正在使用holoeverywhere。我已经为我的应用创建了自己的主题,我可以成功地将这个主题应用到我的活动中。我的主题更改了CheckBox,EditText,DatePicker等的drawable。 问题是这个主题为PreferenceActivity做了npot工作。令我感到困惑的是,如果我将主题设置为Holo.Theme或Holo.Theme.Light它应该改变。但是,如果我把它改成我的主题,它来自Holo.Theme.Light它没有。然而,它所做的所有其他活动都有效。 我通过以下方式更改活动主题:

activity.setTheme(R.style.MyCustomTheme);

所有这些都适用于所有其他活动,而不适用于PreferenceActivity。是否有一些未记录的属性必须设置为更改首选项活动主题?

2 个答案:

答案 0 :(得分:3)

styles.xml

<style name="SettingsTheme" parent="android:Theme.Light">
   <!-- Override properties according to your need -->
   <item name="android:colorBackground">#ffffff</item>
   <item name="android:colorForeground">#aaaaaa</item>

   <item name="android:textColorPrimary">#ff0000</item>
   <item name="android:textColorSecondary">#0000ff</item>
   <item name="android:textColorTertiary">#00ff00</item>
   <item name="android:textColorPrimaryDisableOnly">#888888</item>
   <item name="android:textColorHint">#778899</item>
</style>

使用AndroidManifest.xml

将新定义的样式应用于android:theme中的首选项活动
<activity android:name=".SettingsThemeActivity"
      android:label="@string/app_name"
      android:theme="@style/SettingsTheme">

编辑: 尝试在

之前设置主题
setTheme(R.style.SettingsTheme);

setContentView(R.layout.main);

答案 1 :(得分:0)

不,它没有记录:&#34; I put custom preference styles in the activity theme, but nothing happened!&#34;。

  

对于使用其他主题(不是活动主题)的首选项/视图,您应该使用PreferenceInit.map方法重新映射主题。

import org.holoeverywhere.app.Application;

public class MyApplication extends Application {
  static {
    PreferenceInit.map(R.style.CustomPreferenceTheme, R.style.CustomPreferenceTheme_Light);
  }
}