通过CalendarContract查询时,如何查找事件的文本颜色?我看到那里有一个DISPLAY_COLOR列,它可以提供可靠的背景颜色。在过多的CalendarContract表中,我没有看到任何文本颜色的列。
根据股票日历中的调色板选择来判断,白色文本应该适用于所有人。但是,硬编码" white"似乎是错误的。
有更好的想法吗?
答案 0 :(得分:1)
我认为没有办法设置和调用文字颜色。我最终做的,似乎运作良好,是使用亮度算法。我使用的那个很简单:
// from CalendarContract.Instances.CONTENT_URI;
int backgroundColor = cursor.getInt (getColumnIndexInstances.DISPLAY_COLOR));
int b = backgroundColor & 0xFF;
int g = (backgroundColor >> 8) & 0xFF;
int r = (backgroundColor >> 16) & 0xFF;
int a = (backgroundColor >> 24) & 0xFF;
int y = (3*r + 6*g + 2*b) / 11;
int textColor = (y < 128) ? Color.WHITE : Color.BLACK;
答案 1 :(得分:0)
理想情况下,默认情况下,CalenderContract的显示颜色为白色。如果要调整列颜色,则需要在查询中对其进行硬编码。你可以谷歌html / css颜色代码来帮助决定你想要使用什么颜色。