ทรัพยากรรายการสถานะสี

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>
ต้องระบุ นี่คือองค์ประกอบรูท มีองค์ประกอบ <item> อย่างน้อย 1 รายการ

แอตทริบิวต์:

xmlns:android
สตริง ต้องระบุ กำหนดเนมสเปซ XML ซึ่งก็คือ "http://schemas.android.com/apk/res/android"
<item>
กำหนดสีที่จะใช้ในบางรัฐตามที่อธิบายไว้ในแอตทริบิวต์ของสี เป็น ย่อยขององค์ประกอบ <selector>

แอตทริบิวต์:

android:color
สีแบบเลขฐานสิบหก ต้องระบุ ระบุสีด้วยแอตทริบิวต์ ค่า RGB และช่องทางอัลฟ่าที่ไม่บังคับ

ค่านี้มักจะขึ้นต้นด้วยอักขระสี่เหลี่ยม (#) ตามด้วยอักขระ ข้อมูล Alpha-Red-Green-Blue ในรูปแบบใดรูปแบบหนึ่งต่อไปนี้

  • #RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB
android:lStar
จุดทศนิยม ไม่บังคับ แอตทริบิวต์นี้จะแก้ไขความสว่างทางการรับรู้ของสีฐาน โดยใช้ทั้ง ค่าจุดลอยตัวระหว่าง 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" />
ดูเพิ่มเติม