1

通过 CalendarContract 查询时,如何找到事件的文本颜色?我看到有一列 DISPLAY_COLOR,它似乎可靠地提供了背景颜色。在过多的 CalendarContract 表中,我没有看到任何文本颜色列。

从股票日历中的调色板选择来看,白色文本应该适用于所有人。但是,硬编码“白色”似乎是错误的。

有更好的想法吗?

4

2 回答 2

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;
于 2015-02-28T18:01:57.977 回答
0

理想情况下,CalenderContract 的显示颜色默认为白色。如果要调整列颜色,则需要在查询中对其进行硬编码。你可以谷歌 html/css 颜色代码来帮助决定你想要使用什么颜色。

于 2014-12-30T16:30:30.397 回答