如何以编程方式更改首选项文本颜色?

时间:2015-08-07 18:50:43

标签: android preferenceactivity preference preferencescreen

我正在以编程方式向我的PreferenceScreen实例添加首选项(我将其添加到我的PreferenceActivity中)。一切都按预期工作,除了文本颜色,尽管尝试了总是白色:

  • 通过清单
  • 设置主题
  • 以编程方式设置主题
  • 其他一些不值得注意的黑客

我正在做的一切:

    PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(this);

    PreferenceCategory category = new PreferenceCategory(this);
    category.setTitle("Hello");

    screen.addPreference(category);

    CheckBoxPreference testPreference = new CheckBoxPreference(getApplicationContext());
    testPreference.setTitle("Test");
    category.addPreference(testPreference);

    setPreferenceScreen(screen);

我已将主题设置为ThemeOverlay.AppCompat.Dark(我不想要)并且文字清晰可辨,但这是其他任何情况下的样子(我正在点击它以便您可以看到通过动画效果的文字): enter image description here

如何将此文字设为黑色?

谢谢!

1 个答案:

答案 0 :(得分:0)

简单修复,实际上:

我在getApplicationContext()中调用了CheckBoxPreference testPreference = new CheckBoxPreference(getApplicationContext());,不建议用于对视图进行充气,因为它几乎总是会传递错误的主题。

因此,我将getApplicationContext()更改为this,并将文本颜色加载为主题中描述的颜色。