根据值:
例子
工资:+200
支付:-100
如果 pay 的值较高,则 200 的颜色为绿色。如果 pay 的值较低,则 100 的颜色为红色。
它每秒钟都会改变颜色,因为我有来自浏览器的 xml 文件链接并每秒更新 xml 文件。我喜欢这种颜色,因为我的 xml 文件中的链接会在几秒钟内刷新它并更改颜色取决于更高或更低。
这里如果你的意思是xml文件是xml解析的,试试下面的
当您将文本从 xml 文件放入 listview 时,从 xml 文件中获取颜色并按如下方式解析它
String txt = " <font color=#408cc4>
"+"这里需要打印的文本"+""; viewHolder.activity_hold_heading.setText(Html.fromHtml(txt));
这里color = the color you need
要实现这一点,您需要使用 Simpleadpter 绑定数据并使用 ViewBinder 您可以获得字符串值并根据您的要求更新颜色并更新数据 make adpter Notifydatasetchange
adapater1 = new SimpleAdapter(Byshedulelist.this, shedulelist, R.layout.rowshedule,
new String[] { "im","Countryname", "Titel"},
new int[] { R.id.rowshedulecountryimg,R.id.shedulerowCountrynametxt, R.id.shedulerowtitle,});
adapater1.setViewBinder(new MyViewBinder1());
itemlist.setAdapter(adapater1);
class MyViewBinder1 implements ViewBinder
{ @Override
public boolean setViewValue(View view, Object Status,String textRepresentation)
{
String complet="Pay:+200 ";
String notcomlet="Pay:-100";
String getdata= textRepresentation;
if((view instanceof TextView) & (Status instanceof String) )
{
TextView iv= (TextView) view;
if(complet.equals(Status))
{
r1=true;
r2=false;
iv.setText(textRepresentation);
iv.setTextColor(Color.parseColor("#008000"));
return true;
}
else if(notcomlet.equals(Status))
{
r2=true;
r1=false;
iv.setText(textRepresentation);
iv.setTextColor(Color.RED);
return true;
}
if(r1 && (getdata.startsWith("Pay: ")))
{
iv.setText(textRepresentation);
iv.setTextColor(Color.parseColor("#008000"));
return true;
}
else if (r2 && (getdata.startsWith("Pay: ")))
{
//TextView iv= (TextView) view;
iv.setText(textRepresentation);
iv.setTextColor(Color.RED);
return true;
}
}
return false;
}
}
尝试获取基适配器类的 getGroupView 方法。根据您获得的值尝试设置不同的颜色,如下所示。
方法前:
1)您必须从 String 获取值(需要突出显示的文本)并将其解析为 int 并进行比较。
2)您必须从字符串中获取值的开始和结束索引(需要突出显示文本)。
@Override
public View getGroupView(final int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {
Spannable WordtoSpan = new SpannableString(valuestring);
if(yourvalue>200){
WordtoSpan.setSpan(new ForegroundColorSpan(Color.parseColor("##00FF40")),start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}else if (yourvalue<100){
WordtoSpan.setSpan(new ForegroundColorSpan(Color.parseColor("#DF0101")),start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
yourtextview.setText(WordtoSpan);
}
String txt = "<font color=Red>"+"-100"+"";
String txt = "<font color=Green>"+"200"+"";
viewHolder.activity_hold_heading.setText(Html.fromHtml(txt));