当前位置: 首页 > 知识库问答 >
问题:

以正确的方式更改首选项标题文本颜色

盖昊东
2023-03-14

我想要一个首选项标题的文本,以便在另一个首选项(aSwitchPreference)更改时将其颜色更改为白色。当另一个首选项被更改时,我将从onPreferenceChange侦听器调用此方法:

private void enableSettingsGui(boolean enable)
{
    View preferenceView = getListView().getChildAt(myPref.getOrder());
    TextView title = (TextView)preferenceView.findViewById(android.R.id.title);
    title.setTextColor(getResources().getColor(R.color.white));
}

现在有两种情况:

1) 如果我在onPreferenceChange方法中返回true,则SwitchPreference的开关将正确更改(意味着在启用或禁用的新状态下向左或向右滑动),但受影响首选项的标题颜色不会更改。

2) 如果我在首选项更改中返回false,开关不会改变,但是标题文本的颜色会突然改变。

我怎样才能正确地做呢?

共有1个答案

崔高远
2023-03-14

我已经解决了这个问题。

根据有关 onPreferenceChange 的文档,返回值为

“True以使用新值更新首选项的状态。”

这意味着开关发生了变化,因为返回值告诉他更新状态。颜色看起来没有设置,但实际上设置了,只是为了改变状态,再次调用首选项的onCreative方法,从而覆盖颜色变化。

我所做的是像这样覆盖setEnabled方法:

@Override
public void setEnabled(boolean enabled)
{
    super.setEnabled(enabled);
    shouldEnable = enabled;
}

然后在onCreative中添加了一行:setTitleTextColor(应该启用);,根据启用的状态给文本着色。这样,在重新创建视图并保留颜色后进行了更改。

 类似资料:
  • 我已经将背景颜色更改为我的首选屏幕,但标题栏的行为很奇怪。 我在清单中为偏好活动设置了以下主题: 这是可行的,但标题栏现在看起来是这样的: 我试着玩了一堆其他属性来改变它,但找不到正确的。 谢谢 史蒂夫 编辑: 查看编辑文本弹出窗口,它们也发生了变化 我试图改变弹出窗口,但没有用

  • 我已经阅读了几十篇文章,解释了如何在PreferenceActivity中更改首选项的文本颜色。我没有偏好活动。我在res/xml中使用PreferenceFragment和PreferenceScreen 设置片段 fragment\u设置。xml 偏好。xml 我尝试将添加到中的所有首选项中,但所有文本仍然是黑色的。所有这些线程都在谈论创建一种新样式,但没有一个解释如何将其应用于首选项片段。

  • 我的xml代码如下: 我怎么在这里更改标题的颜色?我对android很陌生。

  • 我在设置中使用ListPreference,我希望颜色适应当前主题的颜色。目前,我正在将主题的alertDialogTheme样式更改为我自己的样式。我已经了解了如何更改对话框标题的颜色、对话框按钮的颜色、单选按钮的文本以及当前所选项目的单选按钮的颜色。我想更改未选中项目单选按钮的颜色。我用红色圈出了我想改变的颜色。 列表首选项: 主题风格:

  • 我有一个设置xml文件,其中有checkboxpreferences和一个switchpreference,当我切换到暗模式时,开关和复选框的颜色不会根据所选模式自动改变这里是我所说的图像 所以switchpreference应该是白色的,当应用程序是暗模式,但它没有改变,谁能帮助我修复它,谢谢 *这是我的设置xml文件

  • 如何更改以下首选项XML中和的颜色: 我尝试了我的: 更改标题的颜色,但它也会更改我工具栏中文本的颜色(我不想要)。 似乎正确地更改了摘要的颜色。 如何在不影响工具栏文本颜色的情况下更改标题颜色?