这真是一个奇怪的情况,我设置了一个普通的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
吗?或者还有其他我需要做的事情吗?
答案 0 :(得分:0)
也许它并不意味着以这种方式工作,即使用跨度。您可以通过实现android:textColorSecondary item
,通过活动样式更改首选项摘要的颜色答案 1 :(得分:0)
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;
}
}