0

我的问题是我有一个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和settertoString()

4

2 回答 2

0

Ridcully 基本上是对的,尽管他的答案并不完整——而且 span 标签也不被支持。

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

您可以使用 Html.fromHtml() 创建一个 Spanned。有关 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());
  }
于 2012-08-23T20:12:44.473 回答
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
于 2012-08-23T19:34:49.077 回答