如何以编程方式更改首选项文本颜色?
How to change Preference text colour programmatically?
我正在以编程方式将首选项添加到我的 PreferenceScreen 实例(我将其添加到我的 PreferenceActivity)。一切都按预期工作,除了文本颜色,尽管尝试过,它始终是白色的:
- 通过manifest设置主题
- 以编程方式设置主题
- 其他一些不值得注意的黑客攻击
我所做的一切:
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
(我不想要)并且文本清晰可辨,但这是在任何其他情况下的样子(我正在点击它所以你可以通过动画效果看到文字):
我该如何将这段文字变黑?
谢谢!
简单的修复,实际上:
我在 CheckBoxPreference testPreference = new CheckBoxPreference(getApplicationContext());
中调用了 getApplicationContext()
,不推荐用于膨胀视图,因为它几乎总是传递错误的主题。
所以,我将 getApplicationContext()
更改为 this
并加载了主题中描述的文本颜色。
我正在以编程方式将首选项添加到我的 PreferenceScreen 实例(我将其添加到我的 PreferenceActivity)。一切都按预期工作,除了文本颜色,尽管尝试过,它始终是白色的:
- 通过manifest设置主题
- 以编程方式设置主题
- 其他一些不值得注意的黑客攻击
我所做的一切:
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
(我不想要)并且文本清晰可辨,但这是在任何其他情况下的样子(我正在点击它所以你可以通过动画效果看到文字):
我该如何将这段文字变黑?
谢谢!
简单的修复,实际上:
我在 CheckBoxPreference testPreference = new CheckBoxPreference(getApplicationContext());
中调用了 getApplicationContext()
,不推荐用于膨胀视图,因为它几乎总是传递错误的主题。
所以,我将 getApplicationContext()
更改为 this
并加载了主题中描述的文本颜色。