我正在尝试在我的偏好屏幕中显示一些彩色文本。为此,我正在创建一个像这样的 Spannable:
final String completeString = title + " - " + (TextUtils.isEmpty(currentValue) ? "?" : currentValue);
SpannableString span = new SpannableString(completeString);
span.setSpan(new ForegroundColorSpan(CURRENT_VALUE_COLOR), title.length() + 3, completeString.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
span.setSpan(new StyleSpan(Typeface.BOLD), title.length() + 3, completeString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
myPref.setSummary(span);
当我的 Preference 在主 PreferenceActivity 屏幕中时它工作正常,但是当它在不同的 PreferenceScreen 中时,颜色不再显示
因此,例如,在这种情况下更改 pref1 摘要会很好:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="@string/cat1" >
<EditTextPreference
android:key="pref1"
android:summary="@string/pref1_summary"
android:title="@string/pref1_title" />
</PreferenceCategory>
</PreferenceScreen>
但在以下情况下会失败:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="@string/cat1" >
<PreferenceScreen
android:summary="@string/prefSubScreen1" >
<ListPreference
android:key="pref1"
android:summary="@string/pref1_summary"
android:title="@string/pref1_title"
... />
知道如何使它工作吗?
编辑:事实上,它看起来与 Preference 在不同的 PreferenceScreen 中无关。如果是 ListPreference,它似乎会失败。为什么 ListPreference 无法将 Spannable 显示为它们的摘要。