Как установить цвет текста сводки настроек Android? - PullRequest
21 голосов
/ 23 октября 2010

На моем экране настроек у меня есть предпочтение, чтобы при нажатии открывалось диалоговое окно выбора цвета. То, что я хотел бы сделать, это когда пользователь выбирает цвет, чтобы текстовая сводка предпочтения отображалась этим цветом.

Я знаю, что можно настроить сводку следующим образом: Currently <font color="#ff0000">this color</font> и отобразить ее в этом цвете. Проблема в том, что цвет, который я получаю, - это цвет Android Int.

Я мог бы использовать методы red (), green (), blue (), а затем преобразовать их в шестнадцатеричные, а затем объединить их в строку, чтобы я мог установить сводный текст с новым значением, и это работает: String colorString = String.format("#%02x%02x%02x",Color.red( defaultColor ), Color.green( defaultColor ), Color.blue( defaultColor )); Мне было просто любопытно, есть ли более простой способ сделать это.

Спасибо заранее.

Sean

Ответы [ 5 ]

33 голосов
/ 29 октября 2010

ОК, в итоге я использовал Spannable.Это принимает цвет как целое число.

Spannable summary = new SpannableString("Currently This Color");
summary.setSpan(new ForegroundColorSpan(color), 0, summary.length(), 0);
preference.setSummary(summary);
4 голосов
/ 14 марта 2014

Используйте Html.fromHtml для оформления текста.

mPodFolderPref.setTitle(Html.fromHtml("<font color='red'>" +  mPodFolderPref.getTitle() + "</font>"));
mPodFolderPref.setSummary(Html.fromHtml("<font color='red'>" +  mPodFolderPref.getSummary() + "</font>"));

Html.fromHtml может многое сделать для вас.

2 голосов
/ 15 октября 2015

Все вышеперечисленные способы не помогли мне. В итоге я расширяю класс Prefernces:

public class CustomListPreferences extends Preference {

    public CustomListPreferences(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomListPreferences(Context context) {
        super(context);
    }

    @Override
    protected void onBindView(View view) {
        super.onBindView(view);
       ((TextView)view.findViewById(android.R.id.summary)).setTextColor(getContext().get Resources().getColor(R.color.green));
    }

}
2 голосов
/ 14 марта 2012

Немного поздно, но я нашел полезным написать следующие автономные методы:

private void setColorPreferencesTitle(EditTextPreference textPref, int color) {
    CharSequence cs     = (CharSequence) textPref.getTitle();
    String plainTitle   = cs.subSequence(0, cs.length()).toString();
    Spannable coloredTitle = new SpannableString (plainTitle);
    coloredTitle.setSpan( new ForegroundColorSpan(color), 0, coloredTitle.length(), 0 );
    textPref.setTitle(coloredTitle);
}

private void resetColorPreferencesTitle(EditTextPreference textPref) {
    CharSequence cs     = (CharSequence) textPref.getTitle();
    String plainTitle   = cs.subSequence(0, cs.length()).toString();
    textPref.setTitle(plainTitle);
}
0 голосов
/ 28 октября 2010

Привет, вы можете изменить цвет предпочтения, используя Html.fromHtml ().

ex: private String title = "" + "Установить лимит отправки SMS" + "";

и добавить установить эту строку из вашего приложения для Android, как это.

CheckBoxPreference _test = (CheckBoxPreference) findPreference ("text");_test .setTitle (Html.fromHtml (title));

перейдите по этой ссылке для просмотра html-кода Android: http://www.androidpeople.com/tag/html-tags/

Спасибо

...