Как отобразить цветной текст на подэкране настроек Android
Я пытаюсь отобразить какой-нибудь цветной текст на своем экране предпочтений. Для этого я создаю 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);
Он отлично работает, когда мои предпочтения находятся на главном экране 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"
... />
Есть идеи, как заставить это работать?
Изменить: На самом деле, похоже, что это не имеет ничего общего с предпочтением, находящимся на другом PreferenceScreen. Похоже, что в случае ListPreference происходит сбой. Почему ListPreference не может отобразить Spannable в качестве их сводки.
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" />
меня устраивает.