使用CalendarContract,如何确定文本颜色?

时间:2014-12-30 16:24:41

标签: android calendarcontract

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

根据股票日历中的调色板选择来判断,白色文本应该适用于所有人。但是,硬编码" white"似乎是错误的。

有更好的想法吗?

2 个答案:

答案 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颜色代码来帮助决定你想要使用什么颜色。