2016-12-06 73 views
0

正如您所看到的,我将字符串设置为2种不同的颜色,并在“完整”TextView上进行测试,它会更改字符串颜色。但是,一旦我把它放在循环内的TextView上,它只会显示String而不是颜色。我该如何解决这个问题?谢谢!字符串颜色不会显示在循环中? Android

String red = " Missing"; 
SpannableString redSpannable= new SpannableString(red); 
redSpannable.setSpan(new ForegroundColorSpan(Color.RED), 0, red.length(), 0); 
// **complete.setText(redSpannable);** 

String green = " Complete"; 
SpannableString greenspan= new SpannableString(green); 
greenspan.setSpan(new ForegroundColorSpan(Color.GREEN), 0, green.length(), 0); 

for (int i = 0; i < lengthJsonArr; i++) { 

    int rem = ingnum.get(i) - (added[i] - 1); 
    Log.v("Final", ingnum.get(i).toString()); 

    if (rem == 0) { 
     jsonParsedfinal.setText(jsonParsedname.getText() + title.get(i) + greenspan + "\n" 
       + "\n" 
       + "Ingredients: " + jsonParseding.getText() + ingre.get(i) + "\n" 
       + "\n" 
       + "Link: " + jsonParsedlink.getText() + link.get(i) + "\n" 

       + "------------------------------------------------------------------------------------------"); 

    } else { 
     jsonParsedfinal.setText(jsonParsedname.getText() + title.get(i) + " " + rem + redSpannable + "\n" 
       + "\n" 
       + "Ingredients: " + jsonParseding.getText() + ingre.get(i) + "\n" 
       + "\n" 
       + "Link: " + jsonParsedlink.getText() + link.get(i) + "\n" 

       + "------------------------------------------------------------------------------------------"); 
    } 
} 

回答

0

使用spannable缓冲合并你的字符串

SpannableStringBuilder sb = new SpannableStringBuilder(); 
sb.append(jsonParsedname.getText() + title.get(i)); 
int start = sb.length(); 
sb.append(" Complete") 
sb.setSpan(new ForegroundColorSpan(Color.GREEN), start, sb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

sb.append("Ingredients: " + jsonParseding.getText() + ingre.get(i) + "\n"); 
sb.append("Link: " + jsonParsedlink.getText() + link.get(i) + "\n"); 
jsonParsedfinal.setText(sb); 
+0

非常感谢,帮助!但是,如果我现在在For循环中运行它,它只适用于最后的结果。 – doomspirospero

+0

也说我有10个结果,这表明一切正常,但仅在10日结果“完成”绿色 – doomspirospero

+0

对于你需要把文本集合了侧的for循环 – Krutik