【问题标题】:Changing Preference title text color the correct way以正确的方式更改首选项标题文本颜色
【发布时间】:2017-06-25 14:26:46
【问题描述】:

当另一个首选项(SwitchPreference)发生更改时,我希望首选项的标题文本将其颜色更改为白色。当其他首选项发生更改时,我将从 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)如果我从 onPreferenceChange 返回 false,则开关不会改变,但标题文本颜色会突然改变。

我怎样才能正确地做到这一点?

【问题讨论】:

    标签: android android-preferences


    【解决方案1】:

    我已经找到了问题所在。

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

    "True 用新值更新 Preference 的状态。"

    这意味着开关发生了变化,因为返回值告诉他更新状态。颜色好像没设置,其实是设置的,只是为了改变状态,再次调用了preference的onCreate方法,从而覆盖了颜色变化。

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

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

    然后在onCreate 中添加以下行:setTitleTextColor(shouldEnable); 根据启用状态为文本着色。这样,在重新创建视图并保留颜色后进行更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      相关资源
      最近更新 更多