我的问题是我有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()
答案 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());
}