Android 文本视图中的值列表中的不同颜色
我的问题是我有一个具有不同值的Android 文本视图中的值列表中的不同颜色,android,colors,textview,Android,Colors,Textview,我的问题是我有一个具有不同值的TextView, 例如: -1.7 +5,8 -3,3 0,0 +7,7 在代码中,我只取了第一个负值,留下了相同的颜色 这是我的代码: 活动: List<ParsedExampleDataSet5101> parsedExampleDataSetList = myExampleHandler.getParsedData(); for(ParsedExampleDataSet5101 pa
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"));
}
}
List parsedExampleDataSetList=
myExampleHandler.getParsedData();
用于(ParsedExampleDataSet5101 parsedExampleDataSet:parsedExampleDataSetList){
append(parsedExampleDataSet.toString());
append(parsedExampleDataSet.toString1());
append(parsedExampleDataSet.toString2());
append(parsedExampleDataSet.toString3());
如果(parsedExampleDataSet.toString2()包含(“-”){
tv2.setTextColor(Color.parseColor(#FF0000”);
}否则{
tv2.setTextColor(Color.parseColor(#008000”);
}
}
ParsedExampleDataSet5101
是另一个类,我在这个类中有getter和setter以及toString()
据我所知,您可以使用简单的HTML在TextView中格式化文本,所以您可以尝试类似于第一个值下一个值的方法
stringbuffers=newstringbuffer();
用于(ParsedExampleDataSet5101 parsedExampleDataSet:parsedExampleDataSetList){
如果(parsedExampleDataSet.toString2()包含(“-”){
s、 附加(“”)
}否则{
s、 附加(“”)
}
s、 追加(parsedExampleDataSet.toString2());
s、 附加(“”);
}
tv.setText(s.toString());// Ridcully基本上是对的,尽管他的答案并不完整——而且span标签也不受支持
您可以在TextView中使用HTML,但必须创建一个包含格式信息的SPAN(CharSequence的子类)
您可以使用Html.fromHtml()创建一个跨距。有关文本视图中HTML格式的详细信息,请参阅我的文章
所以你可以这样做:
if (parsedExampleDataSet.toString2().startsWith("-")){
tv2.append(Html.fromHtml("<font color=\"#ff0000\">" + parsedExampleDataSet.toString2() + "</font>"));
}else{
tv2.append(parsedExampleDataSet.toString2());
}
if(parsedExampleDataSet.toString2().startsWith(“-”){
append(Html.fromHtml(“+parsedExampleDataSet.toString()+”);
}否则{
append(parsedExampleDataSet.toString2());
}
我想说的是,如果是负值,颜色是红色,如果是绿色,这只是一个例子。您必须像以前一样遍历字符串的各个部分,然后构建一个字符串,可能需要使用StringBuffer。请参阅编辑的答案。字符串没有帮助。您需要一个可跨越的、可跨越的或在本例中是可跨越的架构师。您还需要使用Html.fromHtml应用样式信息。请看我的答案,以edwin的原始代码为例。我不是以英语为母语的人。也许我把你的问题搞错了。根据上面给出的代码,我假设您已经解析了某些内容并将其转换为已知类型的列表。fromHtml(String str)对字符串进行操作,并且只支持Html的一个子集(参见我的blogpost,它链接在我的答案中)。因此,你必须下载XML并将其转换成一些可用的东西——一个包含一些HTML格式的简单字符串。是的,Wolfram是对的——我的回答只是从我的头脑中产生的,没有查找详细信息。有什么评论吗,edwin?还缺什么?
if (parsedExampleDataSet.toString2().startsWith("-")){
tv2.append(Html.fromHtml("<font color=\"#ff0000\">" + parsedExampleDataSet.toString2() + "</font>"));
}else{
tv2.append(parsedExampleDataSet.toString2());
}