我想要一个偏好标题的文本,当另一个偏好(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,则开关不会改变,但标题文字颜色会突然改变。
我该如何正确地做到这一点?
答案 0 :(得分:0)
我已经找到了问题所在。
根据有关onPreferenceChange
的文档,返回值为
“为真以使用新值更新首选项的状态。”
这意味着交换机发生了变化,因为返回值告诉他更新状态。颜色看起来好像没有设置,但实际上确实如此,只是为了改变状态,再次调用首选项的onCreate
方法,从而覆盖颜色变化。
我所做的是覆盖setEnabled
方法,如下所示:
@Override
public void setEnabled(boolean enabled)
{
super.setEnabled(enabled);
shouldEnable = enabled;
}
然后在onCreate
添加了行setTitleTextColor(shouldEnable);
,根据启用状态为文本着色。这样,在重新创建视图并保持颜色之后进行了更改。