我正在尝试更改首选项对话框的主题。
我的主题:
<style name="Theme.Preferences.Dialog" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:divider">@color/text_green</item>
<item name="android:textColorPrimary">@color/text_green</item>
<item name="android:background">#fff0f0f0</item>
</style>
偏好活动:
public class SettingsPrefActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
setTheme(R.style.Theme_Preferences_Dialog);
它正在更改首选项对象而不是首选项对话框对象。
示例:这来自我的偏好活动。它不应该是绿色的
这是我的对话框。分隔符和标题应为绿色。
答案 0 :(得分:-1)
setTheme()
。这通常发生在setContentView()
中,但对于PreferenceActivity,它出现在addPreferencesFromResource()
中。
简而言之,请将onCreate()
的内容更改为:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.Theme_Preferences_Dialog);
addPreferencesFromResource(R.xml.preferences);
...
}
就个人而言,我更喜欢通过描述清单中的主题来使这种逻辑与我的视图(我的模型或活动代码之外)更紧密地结合在一起。我建议你看一下Applying Themes and Styles to the UI的建议。例如,通过使用:
<application android:theme="@style/CustomTheme">
或者:
<activity android:theme="@android:style/Theme.Preferences">
另请注意,现在不鼓励使用PreferenceActivity,而是支持PreferenceFragment。