Как управлять контрастностью текста?

#android #colors #contrast

#Android #Цвет #контраст

Вопрос:

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

Комментарии:

1. Вы используете свою собственную тему? Как устанавливается фон?

Ответ №1:

Это может быть полезно: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().

Комментарии:

1. Я думаю, он говорит об инвертировании цвета фона для текста. Например, если бы фон был белым, цвет текста был бы черным. Если бы BG был черным, текст был бы белым. Синий шрифт, желтый текст и т.д. Если это так, я хотел бы знать, возможно ли это тоже 🙂