Как настроить цвет текста андроида?
На моем экране предпочтений я предпочитаю, чтобы при нажатии открывается диалоговое окно выбора цвета. То, что я хотел бы сделать, - это когда пользователь выбирает цвет, чтобы текст этого предпочтения отображался в этом цвете.
Я знаю, что я могу создать сводку, подобную этой, Currently <font color="#ff0000">this color</font>
и показать ее в этом цвете. Проблема в том, что цвет, который я получаю, является цветом android int.
Я мог бы использовать методы red(), green(), blue(), а затем преобразовать их в Hex, а затем объединить их в строку, чтобы я мог установить сводный текст с новым значением и который работает: String colorString = String.format("#%02x%02x%02x",Color.red( defaultColor ), Color.green( defaultColor ), Color.blue( defaultColor ));
Мне было просто любопытно, есть ли более простой способ сделать это.
Спасибо заранее.
Шон
Ответы
Ответ 1
Хорошо, что я закончил, использовал Spannable. Это принимает цвет как целое число.
Spannable summary = new SpannableString("Currently This Color");
summary.setSpan(new ForegroundColorSpan(color), 0, summary.length(), 0);
preference.setSummary(summary);
Ответ 2
Используйте стиль Html.fromHtml для стилизации текста.
mPodFolderPref.setTitle(Html.fromHtml("<font color='red'>" + mPodFolderPref.getTitle() + "</font>"));
mPodFolderPref.setSummary(Html.fromHtml("<font color='red'>" + mPodFolderPref.getSummary() + "</font>"));
Html.fromHtml может многое сделать для вас.
Ответ 3
Немного поздно, но я нашел полезным написать эти автономные методы:
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);
}
Ответ 4
Все вышеперечисленные способы мне не помогли. Я закончил с расширением класса 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));
}
}
Ответ 5
Привет, вы можете изменить цвет предпочтения, используя Html.fromHtml().
ex: private String title= "+" Установить лимит отправки SMS "+" ";
и добавьте эту строку из своего приложения для Android.
CheckBoxPreference _test = (CheckBoxPreference) findPreference ( "текст" );
_test.setTitle(Html.fromHtml(заголовок));
перейдите по этой ссылке для html view android:
http://www.androidpeople.com/tag/html-tags/
Спасибо