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



我的问题是我有一个具有不同值的TextView​​,例如:-1.7+5.8-3,30,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()

据我所知,你可以在TextView中使用简单的HTML来格式化文本,所以你可以尝试<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

Ridcully基本上是对的,尽管他的答案并不完整,span标记也不受支持。

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

您可以使用Html.fromHtml()创建一个Spanned。有关TextViews中Html格式的详细信息,请参阅我的文章使用Html.fromHtml()格式化文本

所以你可以这样做:

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

最新更新