משאב רשימת מצבי צבעים
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
ColorStateList
הוא אובייקט שאפשר להגדיר ב-XML ולהחיל אותו כצבע שמשנה את הצבעים בפועל בהתאם
מצב האובייקט View
הוחלו על. לדוגמה, Button
הווידג'ט יכול להופיע באחד מכמה מצבים: לחוץ, ממוקד או לא קיים. באמצעות רשימת מצבי צבעים,
אפשר להוסיף צבע שונה לכל מדינה.
עליכם לתאר את רשימת המצבים בקובץ XML. כל צבע מוגדר ברכיב <item>
בתוך רכיב <selector>
יחיד. בכל <item>
משתמשת במאפיינים שונים כדי לתאר את המצב שבו משתמשים בה.
במהלך כל שינוי מצב, עוברים מעל רשימת המצבים מלמעלה למטה, יחד עם הפריט הראשון
תואם למצב הנוכחי שבו נעשה שימוש. הבחירה לא על סמך האפשרות 'הכי טוב'
תואמים, אלא הפריט הראשון שעומד בקריטריונים המינימליים של המדינה.
הערה: כדי לספק משאב של צבע סטטי, אפשר להשתמש
בערך פשוט של color [צבע].
- מיקום הקובץ:
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>
- חובה. זהו הרכיב הבסיסי (root). מכיל רכיב
<item>
או יותר.
מאפיינים:
xmlns:android
- מחרוזת. חובה. מגדיר את מרחב השמות של XML,
"http://schemas.android.com/apk/res/android"
<item>
- הגדרת צבע לשימוש במצבים מסוימים, כפי שמתואר על ידי המאפיינים שלו. זה
צאצא של רכיב
<selector>
.
מאפיינים:
android:color
- צבע הקסדצימלי. חובה. הצבע מצוין באמצעות
ערך RGB וערוץ אלפא אופציונלי.
הערך מתחיל תמיד בתו פאונד (#
) ואחריו
מידע בצבע אלפא-אדום-ירוק-כחול באחד מהפורמטים הבאים:
- #RGB
- #ARGB
- #RGGBB
- #AARRGGBB
android:lStar
- נקודה צפה. אופציונלי. המאפיין הזה משנה את רמת הבהירות של צבע הבסיס. נדרשת
ערך נקודה צפה (floating-point) בין 0 ל-100 או מאפיין עיצוב שפותר את הבעיה. של הפריט
כדי לחשב את הצבע הכולל, צריך להמיר את צבע הבסיס למרחב צבעים ידידותי לנגישות
ומגדירים את L* לערך שצוין במאפיין
lStar
.
דוגמה: android:lStar="50"
android:state_pressed
- בוליאני.
"true"
אם משתמשים בפריט הזה כשמקישים על האובייקט, למשל על לחצן
כשמישהו נגע או לוחץ. אם משתמשים בפריט הזה במצב ברירת המחדל הוא "false"
(ללא הקשה).
android:state_focused
- בוליאני.
"true"
אם נעשה שימוש בפריט הזה כשהמיקוד הוא על האובייקט, למשל בלחיצה על לחצן
מודגש באמצעות כדור העקיבה או לחצני החיצים (D-pad). הערך הוא "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-27 (שעון 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-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)"]]