Используя 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, чтобы решить, какой цвет вы хотите использовать.