Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 文本视图中的值列表中的不同颜色_Android_Colors_Textview - Fatal编程技术网

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());
  }