Android - ListPreference集汇总颜色失败(使用setSummary(spannable))

时间:2017-09-19 05:34:55

标签: android android-layout android-preferences spannablestring listpreference

这真是一个奇怪的情况,我设置了一个普通的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吗?或者还有其他我需要做的事情吗?

2 个答案:

答案 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;
    }
}