我在这里有这个列表方法,它创建一个事件列表
public List<Booking> createBookings(Date data) {
ArrayList<Booking> events = new ArrayList<>();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(data);
Cursor c = db.rawQuery("SELECT ID, EVENT, LOCATION, START_DATE, START_TIME," +
" END_DATE, END_TIME, COLOR FROM events WHERE START_DATE<= ? AND END_DATE>= ? ORDER BY START_TIME", new String[]{dateString, dateString});
if (c.moveToFirst()) {
do {
...
color = c.getString(7);
String marker = setColor("•",color);
....
Booking event = new Booking(eventID,marker+" "+start_time+" "+eventTitle+" \n"+durationStr+" "+durationStrHours+durationStrMins+location, data);
events.add(event);
Log.e("EVENTS", "Event ID - " + eventID + " Title - " + eventTitle);
} while (c.moveToNext());
}
return events;
}
我想做的是将颜色设置为特定字符串,从数据库中获取颜色值
//This would take color code or name or however I choose to save the color value.
color = c.getString(7);
现在我想通过使用类似的东西设置该字符串的颜色
String marker = setColor("•",color);
所以setColor
方法会返回一个彩色字符串,然后我可以用它来添加Booking
中的字符串行,该字符串有3个参数,Booking(Integer id, String title, Date date)
Booking event = new Booking(eventID,marker+" "+start_time+" "+eventTitle+" \n"+durationStr+" "+durationStrHours+durationStrMins+location, data);
结果我只会看到字符串行中的特定字符串。这样可能吗?我尝试使用Spannable
但是不行,因为最后我需要String对象..
答案 0 :(得分:0)
实现此目的的一种方法是以编程方式设置html字符串。例如,您可以使用以下字符串资源:
<string>name="html_format"><[CDATA[<font color=%d>your coloured text</font>]]></string>
然后在运行时,您只需使用您想要的颜色格式化html并使用
将其设置在TextView上 textView.setText(Html.fromHtml(formattedString));
您还可以使用此技术轻松地使用<b>
标记以粗体显示TextView文本的各个部分。虽然Android TextViews可以接受Html的限制,但不支持所有格式化选项。