如何设置Android首选项摘要文本颜色?

时间:2010-10-23 16:45:36

标签: android text colors summary preference

在我的首选项屏幕上,我有一个偏好,点击时会打开一个颜色选择器对话框。我想要做的是当用户选择一种颜色时,首选项的文本摘要以该颜色显示。

我知道我可以像这样设置摘要Currently <font color="#ff0000">this color</font>并让它以该颜色显示。问题是我得到的颜色是android int颜色。

我可以使用red(),green(),blue()方法,然后将它们转换为Hex,然后将它们组合成一个字符串,这样我就可以使用新值设置摘要文本,并且可以正常工作:{{1如果有更简单的方法,我只是好奇。

提前致谢。

肖恩

5 个答案:

答案 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/

由于