我的问题是我有一个具有不同值的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());
}