Ресурс списка состояний цвета
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
ColorStateList
— это объект, который можно определить в XML и применить как цвет, который фактически меняет цвета в зависимости от состояния объекта View
, к которому он применяется. Например, виджет Button
может находиться в одном из нескольких состояний: нажат, в фокусе или ни в одном из них. Используя список цветовых состояний, вы можете указать разные цвета для каждого состояния.
Вы описываете список состояний в файле XML. Каждый цвет определяется в элементе <item>
внутри одного элемента <selector>
. Каждый <item>
использует различные атрибуты для описания состояния, в котором он используется.
При каждом изменении состояния список состояний просматривается сверху вниз и используется первый элемент, соответствующий текущему состоянию. Выбор основан не на «лучшем» совпадении, а на первом элементе, который соответствует минимальным критериям штата.
Примечание. Если вы хотите предоставить статический ресурс цвета, используйте простое значение цвета .
- расположение файла:
-
res/color/ filename .xml
Имя файла используется в качестве идентификатора ресурса. - тип данных скомпилированного ресурса:
- Указатель ресурса на
ColorStateList
- ссылка на ресурс:
- На Java:
R.color. filename
В XML: @[ package :]color/ filename
- синтаксис:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:color="hex_color"
android:lStar="floating_point_value"
android:state_pressed=["true" | "false"]
android:state_focused=["true" | "false"]
android:state_selected=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>
- элементы:
-
<selector>
- Необходимый. Это корневой элемент. Содержит один или несколько элементов
<item>
. Атрибуты:
-
xmlns:android
- Нить . Необходимый. Определяет пространство имен XML:
"http://schemas.android.com/apk/res/android"
.
-
<item>
- Определяет цвет, используемый в определенных состояниях, как описано его атрибутами. Это дочерний элемент элемента
<selector>
. Атрибуты:
-
android:color
- Шестнадцатеричный цвет . Необходимый . Цвет задается значением RGB и дополнительным альфа-каналом.
Значение всегда начинается с символа решетки ( #
), за которым следует информация Alpha-Red-Green-Blue в одном из следующих форматов:
- # RGB
- # АРГБ
- # РРГГББ
- # ААРРГГББ
-
android:lStar
- Плавающая точка . Необязательный . Этот атрибут изменяет воспринимаемую яркость базового цвета. Он принимает либо значение с плавающей запятой от 0 до 100, либо атрибут темы, который разрешается соответствующим образом. Общий цвет элемента рассчитывается путем преобразования базового цвета в цветовое пространство, удобное для специальных возможностей, и установки для его L* значения, указанного в атрибуте
lStar
. Пример: android:lStar="50"
-
android:state_pressed
- Логическое значение .
"true"
если этот элемент используется при касании объекта, например при касании или нажатии кнопки. Это "false"
если этот элемент используется по умолчанию, в ненажатом состоянии. -
android:state_focused
- Логическое значение .
"true"
если этот элемент используется, когда объект находится в фокусе, например, когда кнопка выделяется с помощью трекбола или крестовины. Это "false"
если этот элемент используется по умолчанию, в несфокусированном состоянии. -
android:state_selected
- Логическое значение .
"true"
если этот элемент используется при выборе объекта, например при открытии вкладки. Это "false"
если этот элемент использовался, когда объект не выбран. -
android:state_checkable
- Логическое значение .
"true"
если этот элемент используется, когда объект можно проверить. Это "false"
если этот элемент используется, когда объект не может быть проверен. Полезно только в том случае, если объект может переходить между проверяемым и не проверяемым виджетом. -
android:state_checked
- Логическое значение .
"true"
если этот элемент используется при проверке объекта. Это "false"
если оно используется, когда объект не выбран. -
android:state_enabled
- Логическое значение .
"true"
если этот элемент используется, когда объект включен и способен получать события касания или щелчка. Это "false"
если оно используется, когда объект отключен. -
android:state_window_focused
- Логическое значение .
"true"
если этот элемент используется, когда окно приложения находится в фокусе, что означает, что приложение находится на переднем плане. Это "false"
если этот элемент используется, когда окно приложения не имеет фокуса, например, если панель уведомлений опущена или появляется диалоговое окно.
Примечание. Применяется первый элемент в списке состояний, соответствующий текущему состоянию объекта. Таким образом, если первый элемент в списке не содержит ни одного из предыдущих атрибутов состояния, он применяется каждый раз. По этой причине поместите значение по умолчанию последним, как показано в следующем примере.
- пример:
- XML-файл, сохраненный в
res/color/button_text.xml
:<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>
Следующий XML-код макета применяет список цветов к View
:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textColor="@color/button_text" />
- см. также:
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Color state list resource\n\nA [ColorStateList](/reference/android/content/res/ColorStateList)\nis an object you can define in XML and apply as a color that actually changes colors depending on\nthe state of the [View](/reference/android/view/View) object it is\napplied to. For example, a [Button](/reference/android/widget/Button)\nwidget can exist in one of several states: pressed, focused, or neither. Using a color state list,\nyou can provide a different color for each state.\n\nYou describe the state list in an XML file. Each color is defined in an `\u003citem\u003e` element inside a single `\u003cselector\u003e` element. Each `\u003citem\u003e`\nuses various attributes to describe the state in which it is used.\n\nDuring each state change, the state list is traversed top to bottom, and the first item that\nmatches the current state is used. The selection is *isn't* based on the \"best\"\nmatch, but rather the first item that meets the minimum criteria of the state.\n\n**Note:** If you want to provide a static color resource, use a\nsimple [color](/guide/topics/resources/more-resources#Color) value.\n\nfile location:\n: `res/color/`*filename*`.xml` \n\n The filename is used as the resource ID.\n\ncompiled resource datatype:\n: Resource pointer to a [ColorStateList](/reference/android/content/res/ColorStateList)\n\nresource reference:\n:\n In Java: `R.color.`*filename* \n\n In XML: `@[`*package* `:]color/`*filename*\n\nsyntax:\n:\n\n ```xml\n \u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n \u003cselector xmlns:android=\"http://schemas.android.com/apk/res/android\" \u003e\n \u003citem\n android:color=\"hex_color\"\n android:lStar=\"floating_point_value\"\n android:state_pressed=[\"true\" | \"false\"]\n android:state_focused=[\"true\" | \"false\"]\n android:state_selected=[\"true\" | \"false\"]\n android:state_checkable=[\"true\" | \"false\"]\n android:state_checked=[\"true\" | \"false\"]\n android:state_enabled=[\"true\" | \"false\"]\n android:state_window_focused=[\"true\" | \"false\"] /\u003e\n \u003c/selector\u003e\n ```\n\nelements:\n:\n\n `\u003cselector\u003e`\n : **Required.** This is the root element. Contains one or more `\u003citem\u003e` elements.\n\n Attributes:\n\n `xmlns:android`\n : *String* . **Required.** Defines the XML namespace, which is\n `\"http://schemas.android.com/apk/res/android\"`.\n\n `\u003citem\u003e`\n : Defines a color to use during certain states, as described by its attributes. It is a\n child of a `\u003cselector\u003e` element.\n\n Attributes:\n\n `android:color`\n : *Hexadeximal color* . **Required** . The color is specified with an\n RGB value and optional alpha channel.\n\n The value always begins with a pound (`#`) character, followed by the\n Alpha-Red-Green-Blue information in one of the following formats:\n\n - #*RGB*\n - #*ARGB*\n - #*RRGGBB*\n - #*AARRGGBB*\n\n `android:lStar`\n : *Floating point* . **Optional** . This attribute modifies the base color's perceptual luminance. It takes either a\n floating-point value between 0 and 100 or a theme attribute that resolves as such. The item's\n overall color is calculated by converting the base color to an accessibility friendly color space\n and setting its L\\* to the value specified on the `lStar` attribute.\n\n Example: `android:lStar=\"50\"`\n\n `android:state_pressed`\n : *Boolean* . `\"true\"` if this item is used when the object is tapped, such as when a button\n is touched or clicked. It's `\"false\"` if this item is used in the default, non-tapped state.\n\n `android:state_focused`\n : *Boolean* . `\"true\"` if this item is used when the object is focused, such as when a button\n is highlighted using the trackball or D-pad. It's `\"false\"` if this item is used in the default,\n non-focused state.\n\n `android:state_selected`\n : *Boolean* . `\"true\"` if this item is used when the object is selected, such as when a\n tab is opened. It's `\"false\"` if this item it used when the object isn't selected.\n\n `android:state_checkable`\n : *Boolean* . `\"true\"` if this item is used when the object is checkable. It's `\"false\"` if this\n item is used when the object isn't checkable. Only useful if the object can\n transition between a checkable and non-checkable widget.\n\n `android:state_checked`\n : *Boolean* . `\"true\"` if this item is used when the object is checked. It's `\"false\"` if it\n is used when the object is deselected.\n\n `android:state_enabled`\n : *Boolean* . `\"true\"` if this item is used when the object is enabled, capable of\n receiving touch or click events. It's `\"false\"` if it is used when the object is disabled.\n\n `android:state_window_focused`\n : *Boolean* . `\"true\"` if this item is used when the application window has focus,\n meaning the\n application is in the foreground. It's `\"false\"` if this item is used when the application\n window doesn't have focus, such as if the notification shade is pulled down or a dialog appears.\n\n **Note:** The first item in the state list that\n matches the current state of the object is applied. So, if the first item in the list contains\n none of the preceding state attributes, then it applies every time. For this reason, place your\n default value last, as shown in the following example.\n\n\nexample:\n : XML file saved at `res/color/button_text.xml`: \n\n ```xml\n \u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n \u003cselector xmlns:android=\"http://schemas.android.com/apk/res/android\"\u003e\n \u003citem android:state_pressed=\"true\"\n android:color=\"#ffff0000\"/\u003e \u003c!-- pressed --\u003e\n \u003citem android:state_focused=\"true\"\n android:color=\"#ff0000ff\"/\u003e \u003c!-- focused --\u003e\n \u003citem android:color=\"#ff000000\"/\u003e \u003c!-- default --\u003e\n \u003c/selector\u003e\n ```\n\n\n The following layout XML applies the color list to a `View`:\n\n ```xml\n \u003cButton\n android:layout_width=\"fill_parent\"\n android:layout_height=\"wrap_content\"\n android:text=\"@string/button_text\"\n android:textColor=\"@color/button_text\" /\u003e\n ```\n\nsee also:\n:\n - [Color (simple value)](/guide/topics/resources/more-resources#Color)\n - [ColorStateList](/reference/android/content/res/ColorStateList)\n - [State list drawable](/guide/topics/resources/drawable-resource#StateList)"]]