1

我正在尝试在我的偏好屏幕中显示一些彩色文本。为此,我正在创建一个像这样的 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 显示为它们的摘要。

4

1 回答 1

0

您可以将此主题添加到您的style.xml

<style name="SettingsTheme" parent="EsimiBulPreferenceTheme">
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:colorAccent">@color/colorAccent</item>
    <item name="android:background">@color/mobwoo_color_comet</item>
    <item name="android:fontFamily">@font/raleway_regular</item>
    <item name="android:textColor">#FFFFFF</item>
</style>

并在您的Manifest.xml

 <activity
        android:name="com.smartral.mobwoo.activities.Activity_Settings"
        android:screenOrientation="portrait"
        android:theme="@style/SettingsTheme" />

这个对我有用。

于 2019-01-02T21:24:27.327 回答