Список состояний цвета

Список состояний цвета, это объект типа ColorStateList, который вы можете объявить в XML. Данный объект может использоваться в качестве цвета, который меняется в зависимости от состояния визуального объекта. Например, виджет Button может иметь несколько различных состояний (нажат, имеет фокус) и использовать список состояний, чтобы назначить для каждого из состояний свой собственный цвет.

Каждый цвет описывается с помощью элемента <item> внутри элемента <selector>. Каждый <item> использует различные атрибуты, чтобы описать состояние, для которого он должен использоваться.

При каждом изменении состояния, список просматривается сверху вниз и используется первый элемент, соответствующий текущему состоянию – выбор основывается не на “лучшем совпадении”, просто используется самый первый минимально соответствующий состоянию элемент.

Примечание: если вы хотите указать статический цвет, используйте класс Color.

МЕСТОПОЛОЖЕНИЕ ФАЙЛА:

res/color/filename.xml

Имя файла используется в качестве идентификатора ресурса

ТИП РЕСУРСА ПОСЛЕ КОМПИЛЯЦИИ:
Указатель на объект типа ColorStateList.
ССЫЛКА НА РЕСУРС:

В Java: R.color.filename

В XML: @[package:]color/filename

СИНТАКСИС:
ЭЛЕМЕНТЫ:
<selector>

Обязательный. Должен быть корневым элементом. Включает в себя дочерние элементы <item>.

Атрибуты:

xmlns:android
Тип: string. Обязательный. Указывает пространство имен XML. Значение должно быть "schemas.android.com/apk/res/android".
<item>

Указывает цвет, используемый для состояния, описанного атрибутами данного элемента. Должен быть вложен в элемент <selector>.

Атрибуты:

android:color

Цвет в 16-ричном представлении. Обязательный. Задается в формате RGB, опционально может быть указан альфа-канал.

Значение начинается со знака решетки “#”, после которой следует значение в одном из следующих форматов Альфа-Красный-Зеленый-Синий (Alpha-Red-Green-Blue):

  • #RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB
android:state_pressed
Тип: boolean. “true”, если элемент должен использоваться для нажатого объекта (например, при клике на кнопку).
android:state_focused
Тип: boolean. “true”, если элемент должен использоваться для объекта, имеющего фокус (например, если кнопка подсвечена при использовании трекбола или джойстика).
android:state_selected
Тип: boolean. “true”, если элемент должен использоваться для выбранного объекта (например, для открытой закладки).
android:state_checkable
Тип: boolean. “true”, если элемент должен использоваться для объекта, который может переключаться (используется, только если объект может переходить между двумя состояниями “переключаемым” и “не переключаемым”).
android:state_checked
Тип: boolean. “true”, если элемент должен использоваться для “включенного” объекта.
android:state_enabled
Тип: boolean. “true”, если элемент должен использоваться для активного объекта (способного реагировать на действия пользователя). “false”, если нужно использовать элемент для неактивного объекта.
android:state_window_focused
Тип: boolean. “true”, если элемент должен использоваться когда окно приложения имеет фокус (когда приложений выполняется на переднем плане). “false”, чтобы использовать элемент, когда окно приложения не имеет фокус (например, если поверх него отображается диалог или всплывающее сообщение).

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

ПРИМЕР:

XML файл res/color/button_text.xml

Файл разметки может использовать данный список следующим образом:

Добавить комментарий