将着色字符串添加到字符串行

时间:2016-05-18 22:50:30

标签: android string colors

我在这里有这个列表方法,它创建一个事件列表

  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对象..

1 个答案:

答案 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的限制,但不支持所有格式化选项。