Как контролировать контраст текста? - PullRequest
2 голосов
/ 23 апреля 2011

Как изменить цветовой контраст текста при изменении фона?например, если бы у меня был черный фон, черный текст не был бы виден.

1 Ответ

3 голосов
/ 23 апреля 2011

Это может быть полезно: http://developer.android.com/guide/topics/resources/color-list-resource.html

Это способ, которым вы можете установить цвет, который будет меняться в зависимости от определенных обстоятельств.

Например, скажем, у вас есть TextView, который выхотите иметь белый текст, когда он включен, и черный текст, когда он отключен.Вы можете установить это в XML-файле, используя ссылки в приведенной выше ссылке, а затем в своем XML-макете, где вы определяете TextView, установите для android: textColor значение @ color / my_text_color.(my_text_color - созданный вами файл списка цветов xml)

Затем, когда TextView изменится с включенного на отключенный (или независимо от того, что вы настроите в xml-файле), цвет также автоматически изменится.

Это один из способов сделать это.Однако вы можете попытаться уточнить, что вы ищете, поскольку это не совсем понятно в вашем вопросе.

Обновление

После комментария Мэтта, вотметод, который вы можете использовать, чтобы получить инвертированное значение цвета.Возможно, есть лучший способ, но он должен работать.

private int getInverseColor(int color){
    int red = Color.red(color);
    int green = Color.green(color);
    int blue = Color.blue(color);
    int alpha = Color.alpha(color);
    return Color.argb(alpha, 255-red, 255-green, 255-blue);
}

Вы можете программно получить цвет int из представления, такого как TextView, используя один из методов getTextColor ().Возможно, вам придется повозиться с Цветным списком состояний, как я упоминал выше, чтобы получить нужный цвет.Затем передайте этот цвет вышеописанному методу, чтобы получить инвертированный цвет int, и установите его одним из методов setTextColor ().

...