Android- ListPreference SET摘要颜色失败(带有SetSummary(Spannable))



这确实是一个奇怪的情况,我设置了一个普通的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;
    }
}

最新更新