منبع فهرست حالت رنگ

ColorStateList شی ای است که می توانید آن را در XML تعریف کنید و به عنوان رنگی اعمال کنید که در واقع رنگ ها را بسته به وضعیت شی View که روی آن اعمال می شود تغییر می دهد. برای مثال، یک ویجت Button می‌تواند در یکی از چندین حالت وجود داشته باشد: فشرده، متمرکز، یا هیچکدام. با استفاده از فهرست حالت رنگ، می توانید برای هر حالت رنگ متفاوتی ارائه دهید.

شما لیست وضعیت را در یک فایل XML توصیف می کنید. هر رنگ در یک عنصر <item> در داخل یک عنصر <selector> تعریف می‌شود. هر <item> از ویژگی های مختلفی برای توصیف وضعیتی که در آن استفاده می شود استفاده می کند.

در طول هر تغییر حالت، لیست حالت از بالا به پایین پیمایش می شود و اولین موردی که با وضعیت فعلی مطابقت دارد استفاده می شود. انتخاب بر اساس "بهترین" تطابق نیست ، بلکه اولین موردی است که حداقل معیارهای ایالت را برآورده می کند.

توجه: اگر می خواهید یک منبع رنگ ثابت ارائه کنید، از یک مقدار رنگ ساده استفاده کنید.

محل فایل:
res/color/ filename .xml
نام فایل به عنوان شناسه منبع استفاده می شود.
نوع داده منبع کامپایل شده:
اشاره گر منبع به ColorStateList
مرجع منبع:
در جاوا: 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
رنگ هگزادکسیمال . مورد نیاز . رنگ با مقدار RGB و کانال آلفا اختیاری مشخص می شود.

مقدار همیشه با یک کاراکتر پوند ( # ) شروع می شود و به دنبال آن اطلاعات آلفا-قرمز-سبز-آبی در یکی از قالب های زیر قرار می گیرد:

  • # RGB
  • # ARGB
  • # RRGGBB
  • # AARRGGBB
android:lStar
نقطه شناور . اختیاری این ویژگی درخشندگی ادراکی رنگ پایه را تغییر می دهد. یا یک مقدار ممیز شناور بین 0 تا 100 یا یک ویژگی تم می گیرد که به این ترتیب حل می شود. رنگ کلی مورد با تبدیل رنگ پایه به فضای رنگی مناسب برای دسترسی و تنظیم L* آن بر روی مقدار مشخص شده در ویژگی lStar محاسبه می شود.

مثال: android:lStar="50"

android:state_pressed
بولی . "true" اگر از این مورد در هنگام ضربه زدن به شی استفاده شود، مانند زمانی که دکمه ای لمس یا کلیک می شود. اگر این مورد در حالت پیش‌فرض و بدون ضربه استفاده شود، "false" است.
android:state_focused
بولی . "true" اگر این مورد در هنگام فوکوس کردن شی مورد استفاده قرار گیرد، مانند زمانی که یک دکمه با استفاده از گوی یا پد D برجسته می شود. اگر این مورد در حالت پیش‌فرض و بدون تمرکز استفاده شود، "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" />
همچنین ببینید: