Zasób listy stanów kolorów
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
ColorStateList
to obiekt, który można zdefiniować w kodzie XML i zastosować jako kolor, który faktycznie zmienia kolory w zależności
stan obiektu View
do których zastosowano. Przykład: Button
widżet może znajdować się w jednym z kilku stanów: kliknąć, zaznaczyć albo żaden. Za pomocą listy stanów kolorów
możesz podać inny kolor dla każdego stanu.
Listę stanów opisujesz w pliku XML. Każdy kolor jest zdefiniowany w elemencie <item>
wewnątrz pojedynczego elementu <selector>
. Co <item>
ma różne atrybuty do opisania stanu, w jakim jest zastosowany.
Podczas każdej zmiany stanu lista stanów jest przesuwana od góry do dołu. Pierwszy element, który
pasuje do bieżącego stanu. Wybór nie jest wybierany na podstawie „najlepszego”
ale raczej pierwszy element, który spełnia minimalne kryteria stanu.
Uwaga: jeśli chcesz udostępnić statyczny zasób koloru, użyj atrybutu kolor
prostą wartość color.
- lokalizacja pliku:
res/color/filename.xml
(- )
Nazwa pliku jest używana jako identyfikator zasobu.
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
ColorStateList
- odniesienie do zasobu:
-
W języku Java:
R.color.filename
W pliku XML: @[package:]color/filename
- składnia:
-
<?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>
- elementy:
-
<selector>
- Wymagane. To jest element główny. Zawiera co najmniej 1 element
<item>
.
Atrybuty:
xmlns:android
- Ciąg znaków. Wymagane. Definiuje przestrzeń nazw XML, która jest
"http://schemas.android.com/apk/res/android"
<item>
- Określa kolor używany w określonych stanach, zgodnie z jego atrybutami. Jest to
element podrzędny elementu
<selector>
.
Atrybuty:
android:color
- Kolor sześciokątny. Wymagany. Kolor jest określony za pomocą atrybutu
Wartość RGB i opcjonalny kanał alfa.
Wartość zawsze zaczyna się od znaku funta (#
), po którym następuje znak
Informacje w kolorach alfa-czerwonym, zielonym i niebieskim w jednym z tych formatów:
- #RGB
- #ARGB
- #RRGGBB
- Numer AARRGGBB
android:lStar
- Liczba zmiennoprzecinkowa. Atrybut opcjonalny. Ten atrybut modyfikuje luminancję percepcyjną koloru podstawowego. Konieczne jest
zmiennoprzecinkową z zakresu od 0 do 100 lub atrybut tematu, który ma taką postać. Atrybut
ogólny kolor jest obliczany przez konwersję koloru podstawowego na przestrzeń kolorów przyjazną dla ułatwień dostępu.
a jego L* na wartość określoną w atrybucie
lStar
.
Przykład: android:lStar="50"
android:state_pressed
- Wartość logiczna.
"true"
, jeśli ten element jest używany podczas klikania obiektu (np. przycisku)
użytkownik może kliknąć dany element. Jeśli ten element jest używany domyślnie, bez kliknięcia, jest to "false"
.
android:state_focused
- Wartość logiczna.
"true"
, jeśli ten element jest używany, gdy obiekt jest zaznaczony – np. gdy przycisk
zostanie podświetlony za pomocą kulki lub pada kierunkowego. Jeśli ten element jest używany domyślnie, wartość wynosi "false"
.
i stan niezaznaczony.
android:state_selected
- Wartość logiczna.
"true"
, jeśli ten element jest używany, gdy obiekt jest zaznaczony, na przykład
Karta jest otwarta. Jeśli ten element był użyty, gdy obiekt nie został wybrany, jest to "false"
.
android:state_checkable
- Wartość logiczna.
"true"
, jeśli ten element jest używany, gdy obiekt można zaznaczyć. Jest to "false"
, jeśli
jest używany, gdy obiektu nie można zaznaczyć. Przydatny tylko wtedy, gdy obiekt może
przejście między widżetami, które można zaznaczyć lub których nie można zaznaczyć.
android:state_checked
- Wartość logiczna.
"true"
, jeśli ten element jest używany, gdy obiekt jest sprawdzany. Jeśli będzie: "false"
jest używane, gdy obiekt jest odznaczony.
android:state_enabled
- Wartość logiczna.
"true"
, jeśli ten element jest używany, gdy obiekt jest włączony, z możliwością
takich działań. Wartość "false"
, jeśli jest używana, gdy obiekt jest wyłączony.
android:state_window_focused
- Wartość logiczna.
"true"
, jeśli ten element jest używany, gdy okno aplikacji jest zaznaczone,
czyli
Aplikacja działa na pierwszym planie. Wartość "false"
, jeśli ten element jest używany, gdy aplikacja
okno jest nieaktywne, np. gdy obszar powiadomień został przesunięty w dół lub pojawi się okno.
Uwaga: pierwszy element na liście stanów, w którym występuje
pasuje do bieżącego stanu obiektu. Jeśli więc pierwszy element na liście zawiera
żadnego z poprzednich atrybutów stanu, będzie on stosowany za każdym razem. Z tego powodu umieść
jak widać w następnym przykładzie.
- przykład:
- Plik XML zapisany o
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>
Ten układ XML układu stosuje listę kolorów do elementu View
:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textColor="@color/button_text" />
- zobacz też:
-
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 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)"]]