我想这样做:当取消选中CheckBoxPreference时,CheckBoxPreference标题的文本颜色变为灰色,如果选中,标题的文本色将恢复为原始颜色(取决于主题)。
到目前为止,我所做的是:我创建了一个从CheckBoxPreference
扩展而来的新类。
public class CustomCheckBoxPreference extends CheckBoxPreference{
TextView txtTitle;
int originalTextColor;
public CustomCheckBoxPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onBindView(View view) {
txtTitle = (TextView) view.findViewById(android.R.id.title);
originalTextColor = txtTitle.getCurrentTextColor();
setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
if (isChecked()) {
txtTitle.setTextColor(originalTextColor); //it doesn't work
}
else {
txtTitle.setTextColor(Color.GRAY); //it doesn't work
}
return true;
}
});
super.onBindView(view);
}
}
当我运行应用程序时,txtTitle.setTextColor(..)
显然不起作用,文本颜色根本没有改变。我还与调试器确认调用了onPreferenceClick
方法。
即使我也做了同样的事情,但我也不知道原因。
但是,如果删除onPreferenceClickListener()
并仅在else时使用,它会起作用。
protected void onBindView(View view) {
txtTitle = (TextView) view.findViewById(android.R.id.title);
originalTextColor = txtTitle.getCurrentTextColor();
if (isChecked()) {
txtTitle.setTextColor(originalTextColor);
}
else {
txtTitle.setTextColor(Color.GRAY);
}
return true;
super.onBindView(view);
}