משאב רשימת מצבי צבעים

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" />
למידע נוסף: