مورد قائمة حالة الألوان

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
لون سداسي عشري: مَعلمة مطلوبة. يتم تحديد اللون باستخدام قيمة النموذج اللوني أحمر أخضر أزرق وقناة ألفا اختيارية.

تبدأ القيمة دائمًا بحرف جنيه (#)، متبوعًا معلومات ألفا-الأحمر-الأخضر-الأزرق بأحد التنسيقات التالية:

  • #نموذج أحمر أخضر أزرق
  • #ARGB
  • #RRGGBB
  • #AARRGGBB
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" إذا تم استخدام هذا العنصر عند استخدام التطبيق. لا تحتوي النافذة على تركيز، مثلاً عند سحب مركز الإشعارات للأسفل أو ظهور مربّع حوار.

ملاحظة: العنصر الأول في قائمة الحالات تطابق الحالة الحالية للكائن. لذلك، إذا كان العنصر الأول في القائمة يحتوي على لا شيء من سمات الحالة السابقة، فإنه يتم تطبيقها في كل مرة. لهذا السبب، ضع القيمة الافتراضية last، كما هو موضح في المثال التالي.

مثلا:
تم حفظ ملف 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" />
راجِع أيضًا: