Как я могу установить цвет текстового цвета предпочтения Android?
-
25-09-2019 - |
Вопрос
На экране моего предпочтения у меня есть предпочтение, которое при нажатии открывается диалоговое окно Picker. То, что я хотел бы сделать, это когда пользователь выбирает цвет, что текстовое резюме предпочтения отображается в этом цвете.
Я знаю, что я могу иметь сводную информацию, как это, Currently <font color="#ff0000">this color</font>
И имейте это отображение в этом цвете. Проблема в том, что цвет, который я получаю обратно - это цвет Android INT.
Я мог бы использовать красные (), зеленые (), синие () методы, а затем преобразовывать их в шестнадцатеричное, а затем объединить их в строку, чтобы я мог бы установить сводный текст с новым значением, и это работает: String colorString = String.format("#%02x%02x%02x",Color.red( defaultColor ), Color.green( defaultColor ), Color.blue( defaultColor ));
Мне просто любопытно, если есть более простой способ сделать это.
Спасибо заранее.
Севан
Решение
ОК, то, что я оказался, использовал пламетный. Это берет цвет как целое число.
Spannable summary = new SpannableString("Currently This Color");
summary.setSpan(new ForegroundColorSpan(color), 0, summary.length(), 0);
preference.setSummary(summary);
Другие советы
Используйте HTML.FROMHTML для стиля вашего текста.
mPodFolderPref.setTitle(Html.fromHtml("<font color='red'>" + mPodFolderPref.getTitle() + "</font>"));
mPodFolderPref.setSummary(Html.fromHtml("<font color='red'>" + mPodFolderPref.getSummary() + "</font>"));
Html.fromhtml может многое сделать для вас.
Немного поздно, но я нашел полезно написать эти автономные методы:
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);
}
Все вышеперечисленные способы меня не помогли. Я оказался расширением класса предпочтиний:
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));
}
}
Привет, вы можете изменить цвет предпочтения с помощью HTML.FROMHTML ().
EX: Private String Sitle = «+» Установите ограничение SMS Отправить «+»;
И добавьте установите эту строку из вашего приложения Android.
CheckBoxPreference _Test = (CheckBoxPreference) FindPreference («текст»); _test .settitle (html.fromhtml (название));
Следуйте по этой ссылке для HTML View на Android:http://www.androidpeople.com/tag/html-tags/
Спасибо