这确实是一个奇怪的情况,我设置了一个普通的listPreference,希望将其摘要颜色设置为另一种自定义颜色,就像我为所有其他偏好小部件所做的那样,例如:
String mainSummary = listPreference.getSummary().toString();
Spannable coloredMainSummary = new SpannableString (mainSummary);
coloredMainSummary.setSpan( new ForegroundColorSpan(Color.RED), 0,
coloredMainSummary.length(), 0 );
listPreference.setSummary(coloredMainSummary);
但它不再起作用,我仍然可以将摘要设置为我想要的其他文本,但是颜色不会像我想要的那样改变。是因为ListPreference
不支持Spannable
吗?还是我需要做的其他事情?
也许不是那样工作,即使用跨度。您可以通过实现Android来更改首选项摘要的颜色:TextColorSecondary项目
public class SpannedSummaryListPreference extends ListPreference {
private CharSequence mCharSequenceSummary;
public SpannedSummaryListPreference(Context context) {
super(context);
mCharSequenceSummary = getSummary();
}
@Override
public CharSequence getSummary() {
final CharSequence entry = getEntry();
if (super.getSummary() == null || entry == null) {
return super.getSummary();
} else {
if (mCharSequenceSummary instanceof String) {
return super.getSummary();
} else {
return mCharSequenceSummary;
}
}
}
@Override
public void setSummary(CharSequence summary) {
super.setSummary(summary);
mCharSequenceSummary = summary;
}
}