从光标打印时,是否可以更改一个数据库项的文本颜色?

时间:2011-06-06 15:07:54

标签: android sqlite

我有一个使用光标显示的数据库。我现在正在做的只是将结果附加到字符串并显示。我想要做的是根据项目的类型更改每个数据库结果的标题的文本颜色,但我不认为使用Stringbuilder附加文本是可能的。

我是否可以使用其他东西来实现这一点,或者我是否使用Stringbuilder忽略了一些允许我这样做的东西?

以下是我想要获得的输出示例:

物品名称1(蓝色) 项目说明(白色)评级(白色) 型号(白色)

项目名称2(红色) 项目说明(白色)评级(白色) 型号(白色)

项目名称3(绿色) 项目说明(白色)评级(白色) 型号(白色)

物品名称4(绿色) 项目说明(白色)评级(白色) 型号(白色)

等等......

“项目名称”字段的颜色取决于项目本身。感谢任何帮助或指向正确的方向。

编辑1 这是一个缩短的示例(包括一些数据库列),显示结果:

public void showItems(Cursor cursor) {
    StringBuilder ret = new StringBuilder();
    while (cursor.moveToNext()) {
        String name = cursor.getString(1);
        String model = cursor.getString(2);
        ret.append(name + "\n" + model + "\n);
    }
    sResults.setText(ret);
}

这是我在网上找到的一个教程,除了将文本的某些部分改为不同的颜色外,效果很好。

编辑2 基于以下建议,我试过这个:

public void showItems(Cursor cursor) {
    StringBuilder ret = new StringBuilder();
    while (cursor.moveToNext()) {
        String name = cursor.getString(1);
        String model = cursor.getString(2);
        Spanned styleText = (Html.fromHtml("<b><style='color:red;'>" + name + "</style></b><br />" + model + "<br />"));

        ret.append(styleText);
    }
    sResults.setText(ret);
}

我得到与原始代码相同的结果,没有任何颜色。还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

使用fromHtml:这将允许您设置字符串的样式。

   String styleText = "This is <style='color:red;'>red</style>.";
   textView.setText(Html.fromHtml(styleText), TextView.BufferType.SPANNABLE);