TextView中值的列表中的不同颜色

时间:2012-08-23 19:20:07

标签: android colors textview

我的问题是我有TextView具有不同的值,例如: -1.7 +5,8 -3,3  0,0 +7,7

使用我所做的代码,只取第一个负值,并留下我所有相同的颜色。

这是我的代码:

的活动:

    List<ParsedExampleDataSet5101> parsedExampleDataSetList = 
                myExampleHandler.getParsedData();

        for(ParsedExampleDataSet5101 parsedExampleDataSet : parsedExampleDataSetList){

            tv.append(parsedExampleDataSet.toString());
            tv1.append(parsedExampleDataSet.toString1());
                    tv2.append(parsedExampleDataSet.toString2());
            tv3.append(parsedExampleDataSet.toString3());   

            if (parsedExampleDataSet.toString2().contains("-")){
                tv2.setTextColor(Color.parseColor("#FF0000"));
            }else{
                tv2.setTextColor(Color.parseColor("#008000"));
            }

        }

ParsedExampleDataSet5101是另一个类,我在本课程中有getter和setter以及toString()

2 个答案:

答案 0 :(得分:0)

据我所知,您可以使用简单的HTML格式化TextView中的文本,因此您可以尝试<span style="color:#FF0000">first value</span><span style="color:#008000">next value</span>之类的内容。

StringBuffer s = new StringBuffer();
for(ParsedExampleDataSet5101 parsedExampleDataSet : parsedExampleDataSetList){
    if (parsedExampleDataSet.toString2().contains("-")) {
        s.append("<span style="color:#FF0000">")
    } else {
        s.append("<span style="color:#008000">")
    }
    s.append(parsedExampleDataSet.toString2());
    s.append("</span>");
}
tv.setText(s.toString()); // <-- supposing tv is your TextView object

答案 1 :(得分:0)

Ridcully基本上是对的,虽然他的回答并不完整 - 并且也不支持span标记。

您可以在Textviews中使用HTML,但必须创建包含格式信息的Spanned(CharSequence的子类)。

使用Html.fromHtml()创建跨区域。有关TextViews中HTML格式的详细信息,请参阅我的帖子 Formatting text with Html.fromHtml()

所以你可以这样做:

  if (parsedExampleDataSet.toString2().startsWith("-")){
     tv2.append(Html.fromHtml("<font color=\"#ff0000\">" + parsedExampleDataSet.toString2() + "</font>"));
  }else{
     tv2.append(parsedExampleDataSet.toString2());
  }