在我的首选项屏幕上,我有一个偏好,点击时会打开一个颜色选择器对话框。我想要做的是当用户选择一种颜色时,首选项的文本摘要以该颜色显示。
我知道我可以像这样设置摘要Currently <font color="#ff0000">this color</font>
并让它以该颜色显示。问题是我得到的颜色是android int颜色。
我可以使用red(),green(),blue()方法,然后将它们转换为Hex,然后将它们组合成一个字符串,这样我就可以使用新值设置摘要文本,并且可以正常工作:{{1如果有更简单的方法,我只是好奇。
提前致谢。
肖恩
答案 0 :(得分:33)
好的,我最终做的是使用Spannable。这将颜色作为整数。
Spannable summary = new SpannableString("Currently This Color");
summary.setSpan(new ForegroundColorSpan(color), 0, summary.length(), 0);
preference.setSummary(summary);
答案 1 :(得分:4)
使用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 :(得分:2)
有点晚了,但我发现编写这些自包含方法很有用:
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);
}
答案 3 :(得分:2)
以上所有方式对我没有帮助。我最终扩展了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));
}
}
答案 4 :(得分:-1)
您好,您可以使用Html.fromHtml()更改首选项的颜色。
ex:private String title =“”+“设置短信发送限制”+“”;
并在Android应用程序中添加此字符串,如下所示。
CheckBoxPreference _test =(CheckBoxPreference)findPreference(“text”); _test .setTitle(Html.fromHtml(title));
点击此链接获取android的html视图: http://www.androidpeople.com/tag/html-tags/
由于