Используя CalendarContract, как определить цвет текста?

Как мне найти цвет текста для события при запросе через CalendarContract? Я вижу столбец DISPLAY_COLOR, который, по-видимому, надежно обеспечивает цвет фона. Я не вижу ни одного столбца для цвета текста в множестве таблиц CalendarContract.

Судя по выбору палитры в фондовом календаре, белый текст должен работать для всех. Тем не менее, кажется неправильным жесткий код "белый".

Есть идеи получше?

2 ответа

Решение

Я не думаю, что есть способ установить и вспомнить цвет текста. То, что я в конечном итоге сделал, что, кажется, работает хорошо, это использовать алгоритм яркости. Тот, который я использовал, очень прост:

  // 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;

В идеале отображаемый цвет для CalenderContract по умолчанию белый. Если вы хотите настроить цвет столбца, вам нужно жестко закодировать его в запросе. Вы можете использовать цветной код html/css, чтобы решить, какой цвет вы хотите использовать.

Другие вопросы по тегам